{
  "contracts": {
    "contracts/FeeTo.sol:FeeTo": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner_",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "name": "claim",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeRecipient",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "pairAllowStates",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "token0DisallowCount",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "token1DisallowCount",
              "type": "uint128"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "name": "renounce",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "feeRecipient_",
              "type": "address"
            }
          ],
          "name": "setFeeRecipient",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "owner_",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "tokenAllowStates",
          "outputs": [
            {
              "internalType": "bool",
              "name": "allowed",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "disallowCount",
              "type": "uint128"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "allowed",
              "type": "bool"
            }
          ],
          "name": "updateTokenAllowState",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "internalType": "bool",
              "name": "allowed",
              "type": "bool"
            }
          ],
          "name": "updateTokenAllowStates",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506040516110603803806110608339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610ffb806100656000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d97617211610076578063df8ca76a1161005b578063df8ca76a146102ad578063e359f0ed146102e8578063e74b981b1461034a576100be565b80638d976172146102005780638da5cb5b146102a5576100be565b80631f76a7af116100a75780631f76a7af1461013d5780633e2f3f2b1461017057806346904840146101cf576100be565b806313af4035146100c35780631e83409a146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037d565b005b61012b6004803603602081101561010e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661044a565b60408051918252519081900360200190f35b61012b6004803603602081101561015357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e6565b6101a36004803603602081101561018657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c7f565b6040805192151583526fffffffffffffffffffffffffffffffff90911660208301528051918290030190f35b6101d7610cad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603604081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050503515159050610cc9565b6101d7610cff565b6100f6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d1b565b61031b600480360360208110156102fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e87565b604080516fffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b6100f66004803603602081101561036057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ec3565b60005473ffffffffffffffffffffffffffffffffffffffff16331461040357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f466565546f3a3a7365744f776e65723a206e6f7420616c6c6f77656400000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d602081101561050457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d60208110156105c757600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1680156106045750805460ff165b801561062c57508254825461010090046fffffffffffffffffffffffffffffffff9081169116145b801561066857508254815461010090046fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000090920416145b801561068b575060015473ffffffffffffffffffffffffffffffffffffffff1615155b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b5051935083156107de57600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810187905290519187169163a9059cbb916044808201926020929091908290030181600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050506040513d60208110156107d657600080fd5b50516107de57fe5b505050919050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561087657600080fd5b505afa15801561088a573d6000803e3d6000fd5b505050506040513d60208110156108a057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1615806109a15750805460ff16155b806109ca5750825482546fffffffffffffffffffffffffffffffff918216610100909104909116115b80610a065750825481547001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff90811661010090920416115b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b158015610a7757600080fd5b505afa158015610a8b573d6000803e3d6000fd5b505050506040513d6020811015610aa157600080fd5b505193508315610bec57604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820181905260248201879052915163a9059cbb916044808201926020929091908290030181600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b5051610b5357fe5b604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201819052825190926389afcb4492602480820193918290030181600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050506040513d6040811015610be957600080fd5b50505b815460ff1615610c3a57815483546101009091046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161783555b805460ff16156107de575482546fffffffffffffffffffffffffffffffff90811661010090920416700100000000000000000000000000000000021790915550919050565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005b8251811015610cfa57610cf2838281518110610ce457fe5b602002602001015183610d1b565b600101610ccc565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610f9e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020805460ff16151582151514610cfa5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151780825561010090046fffffffffffffffffffffffffffffffff16610e345780547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff16610100178155610cfa565b81610cfa5780546fffffffffffffffffffffffffffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff909116178155505050565b6003602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f7b6023913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fe466565546f3a3a736574466565526563697069656e743a206e6f7420616c6c6f776564466565546f3a3a757064617465546f6b656e416c6c6f7753746174653a206e6f7420616c6c6f776564a265627a7a723158208817d1ae30143a8846a0845731b2d88c3b34d3c4fe337e9dc22a10777d8cb23b64736f6c63430005100032",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1060 CODESIZE SUB DUP1 PUSH2 0x1060 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xFFB DUP1 PUSH2 0x65 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 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D976172 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xDF8CA76A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xDF8CA76A EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xE359F0ED EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH2 0x34A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8D976172 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2A5 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1F76A7AF GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x1F76A7AF EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x3E2F3F2B EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x46904840 EQ PUSH2 0x1CF JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x13AF4035 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x1E83409A EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x44A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D7 PUSH2 0xCAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP POP POP CALLDATALOAD ISZERO ISZERO SWAP1 POP PUSH2 0xCC9 JUMP JUMPDEST PUSH2 0x1D7 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xD1B JUMP JUMPDEST PUSH2 0x31B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEC3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x403 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x466565546F3A3A7365744F776E65723A206E6F7420616C6C6F77656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x604 JUMPI POP DUP1 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 ISZERO PUSH2 0x62C JUMPI POP DUP3 SLOAD DUP3 SLOAD PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ JUMPDEST DUP1 ISZERO PUSH2 0x668 JUMPI POP DUP3 SLOAD DUP2 SLOAD PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP3 DIV AND EQ JUMPDEST DUP1 ISZERO PUSH2 0x68B JUMPI POP PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x7DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x710 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP DUP4 ISZERO PUSH2 0x7DE JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 DUP8 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7DE JUMPI INVALID JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x94D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x9A1 JUMPI POP DUP1 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0x9CA JUMPI POP DUP3 SLOAD DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND GT JUMPDEST DUP1 PUSH2 0xA06 JUMPI POP DUP3 SLOAD DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND GT JUMPDEST ISZERO PUSH2 0x7DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP DUP4 ISZERO PUSH2 0xBEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xB53 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST DUP2 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC3A JUMPI DUP2 SLOAD DUP4 SLOAD PUSH2 0x100 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP4 SSTORE JUMPDEST DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7DE JUMPI SLOAD DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND PUSH17 0x100000000000000000000000000000000 MUL OR SWAP1 SWAP2 SSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP2 AND SWAP1 PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xCFA JUMPI PUSH2 0xCF2 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCE4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH2 0xD1B JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xCCC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF9E PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ PUSH2 0xCFA JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 ISZERO ISZERO OR DUP1 DUP3 SSTORE PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE34 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FF AND PUSH2 0x100 OR DUP2 SSTORE PUSH2 0xCFA JUMP JUMPDEST DUP2 PUSH2 0xCFA JUMPI DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP1 DUP4 DIV DUP3 AND PUSH1 0x1 ADD SWAP1 SWAP2 AND MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FF SWAP1 SWAP2 AND OR DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF7B PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID CHAINID PUSH6 0x65546F3A3A73 PUSH6 0x744665655265 PUSH4 0x69706965 PUSH15 0x743A206E6F7420616C6C6F77656446 PUSH6 0x65546F3A3A75 PUSH17 0x64617465546F6B656E416C6C6F77537461 PUSH21 0x653A206E6F7420616C6C6F776564A265627A7A7231 PC KECCAK256 DUP9 OR 0xD1 0xAE ADDRESS EQ GASPRICE DUP9 CHAINID LOG0 DUP5 JUMPI BALANCE 0xB2 0xD8 DUP13 EXTCODESIZE CALLVALUE 0xD3 0xC4 INVALID CALLER PUSH31 0x9DC22A10777D8CB23B64736F6C634300051000320000000000000000000000 ",
          "sourceMap": "244:5140:0:-;;;654:66;8:9:-1;5:2;;;30:1;27;20:12;5:2;654:66:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;654:66:0;699:5;:14;;-1:-1:-1;;;;;699:14:0;;;-1:-1:-1;;;;;;699:14:0;;;;;;;;;244:5140;;;;;;"
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d97617211610076578063df8ca76a1161005b578063df8ca76a146102ad578063e359f0ed146102e8578063e74b981b1461034a576100be565b80638d976172146102005780638da5cb5b146102a5576100be565b80631f76a7af116100a75780631f76a7af1461013d5780633e2f3f2b1461017057806346904840146101cf576100be565b806313af4035146100c35780631e83409a146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037d565b005b61012b6004803603602081101561010e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661044a565b60408051918252519081900360200190f35b61012b6004803603602081101561015357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e6565b6101a36004803603602081101561018657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c7f565b6040805192151583526fffffffffffffffffffffffffffffffff90911660208301528051918290030190f35b6101d7610cad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603604081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050503515159050610cc9565b6101d7610cff565b6100f6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d1b565b61031b600480360360208110156102fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e87565b604080516fffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b6100f66004803603602081101561036057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ec3565b60005473ffffffffffffffffffffffffffffffffffffffff16331461040357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f466565546f3a3a7365744f776e65723a206e6f7420616c6c6f77656400000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d602081101561050457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d60208110156105c757600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1680156106045750805460ff165b801561062c57508254825461010090046fffffffffffffffffffffffffffffffff9081169116145b801561066857508254815461010090046fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000090920416145b801561068b575060015473ffffffffffffffffffffffffffffffffffffffff1615155b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b5051935083156107de57600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810187905290519187169163a9059cbb916044808201926020929091908290030181600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050506040513d60208110156107d657600080fd5b50516107de57fe5b505050919050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561087657600080fd5b505afa15801561088a573d6000803e3d6000fd5b505050506040513d60208110156108a057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1615806109a15750805460ff16155b806109ca5750825482546fffffffffffffffffffffffffffffffff918216610100909104909116115b80610a065750825481547001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff90811661010090920416115b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b158015610a7757600080fd5b505afa158015610a8b573d6000803e3d6000fd5b505050506040513d6020811015610aa157600080fd5b505193508315610bec57604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820181905260248201879052915163a9059cbb916044808201926020929091908290030181600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b5051610b5357fe5b604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201819052825190926389afcb4492602480820193918290030181600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050506040513d6040811015610be957600080fd5b50505b815460ff1615610c3a57815483546101009091046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161783555b805460ff16156107de575482546fffffffffffffffffffffffffffffffff90811661010090920416700100000000000000000000000000000000021790915550919050565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005b8251811015610cfa57610cf2838281518110610ce457fe5b602002602001015183610d1b565b600101610ccc565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610f9e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020805460ff16151582151514610cfa5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151780825561010090046fffffffffffffffffffffffffffffffff16610e345780547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff16610100178155610cfa565b81610cfa5780546fffffffffffffffffffffffffffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff909116178155505050565b6003602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f7b6023913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fe466565546f3a3a736574466565526563697069656e743a206e6f7420616c6c6f776564466565546f3a3a757064617465546f6b656e416c6c6f7753746174653a206e6f7420616c6c6f776564a265627a7a723158208817d1ae30143a8846a0845731b2d88c3b34d3c4fe337e9dc22a10777d8cb23b64736f6c63430005100032",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D976172 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xDF8CA76A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xDF8CA76A EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xE359F0ED EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH2 0x34A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x8D976172 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2A5 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1F76A7AF GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x1F76A7AF EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x3E2F3F2B EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x46904840 EQ PUSH2 0x1CF JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x13AF4035 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x1E83409A EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x44A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D7 PUSH2 0xCAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP POP POP CALLDATALOAD ISZERO ISZERO SWAP1 POP PUSH2 0xCC9 JUMP JUMPDEST PUSH2 0x1D7 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xD1B JUMP JUMPDEST PUSH2 0x31B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEC3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x403 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x466565546F3A3A7365744F776E65723A206E6F7420616C6C6F77656400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x604 JUMPI POP DUP1 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 ISZERO PUSH2 0x62C JUMPI POP DUP3 SLOAD DUP3 SLOAD PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ JUMPDEST DUP1 ISZERO PUSH2 0x668 JUMPI POP DUP3 SLOAD DUP2 SLOAD PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP3 DIV AND EQ JUMPDEST DUP1 ISZERO PUSH2 0x68B JUMPI POP PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x7DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x710 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP DUP4 ISZERO PUSH2 0x7DE JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 DUP8 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7DE JUMPI INVALID JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x94D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x9A1 JUMPI POP DUP1 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0x9CA JUMPI POP DUP3 SLOAD DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND GT JUMPDEST DUP1 PUSH2 0xA06 JUMPI POP DUP3 SLOAD DUP2 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND GT JUMPDEST ISZERO PUSH2 0x7DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP DUP4 ISZERO PUSH2 0xBEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xB53 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST DUP2 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC3A JUMPI DUP2 SLOAD DUP4 SLOAD PUSH2 0x100 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP4 SSTORE JUMPDEST DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7DE JUMPI SLOAD DUP3 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND PUSH17 0x100000000000000000000000000000000 MUL OR SWAP1 SWAP2 SSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP2 AND SWAP1 PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xCFA JUMPI PUSH2 0xCF2 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCE4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH2 0xD1B JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xCCC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF9E PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP3 ISZERO ISZERO EQ PUSH2 0xCFA JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 ISZERO ISZERO OR DUP1 DUP3 SSTORE PUSH2 0x100 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE34 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FF AND PUSH2 0x100 OR DUP2 SSTORE PUSH2 0xCFA JUMP JUMPDEST DUP2 PUSH2 0xCFA JUMPI DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 DUP1 DUP4 DIV DUP3 AND PUSH1 0x1 ADD SWAP1 SWAP2 AND MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FF SWAP1 SWAP2 AND OR DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF7B PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID CHAINID PUSH6 0x65546F3A3A73 PUSH6 0x744665655265 PUSH4 0x69706965 PUSH15 0x743A206E6F7420616C6C6F77656446 PUSH6 0x65546F3A3A75 PUSH17 0x64617465546F6B656E416C6C6F77537461 PUSH21 0x653A206E6F7420616C6C6F776564A265627A7A7231 PC KECCAK256 DUP9 OR 0xD1 0xAE ADDRESS EQ GASPRICE DUP9 CHAINID LOG0 DUP5 JUMPI BALANCE 0xB2 0xD8 DUP13 EXTCODESIZE CALLVALUE 0xD3 0xC4 INVALID CALLER PUSH31 0x9DC22A10777D8CB23B64736F6C634300051000320000000000000000000000 ",
          "sourceMap": "244:5140:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;244:5140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;726:142:0;;;;:::i;:::-;;4056:1326;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4056:1326:0;;;;:::i;:::-;;;;;;;;;;;;;;;;2155:1895;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2155:1895:0;;;;:::i;416:59::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;416:59:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;291:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1952:197;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1952:197:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1952:197:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1952:197:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1952:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1952:197:0;;-1:-1:-1;;;;1952:197:0;;;;-1:-1:-1;1952:197:0;:::i;265:20::-;;;:::i;1057:889::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1057:889:0;;;;;;;;;;;:::i;590:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;590:57:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;874:177;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;874:177:0;;;;:::i;726:142::-;799:5;;;;785:10;:19;777:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;847:5;:14;;;;;;;;;;;;;;;726:142::o;4056:1326::-;4101:10;4123:37;4163:15;:21;4179:4;4163:21;;;;;;;;;;;;;;;4123:61;;4194:40;4237:16;:47;4269:4;4254:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4254:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4254:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4254:29:0;;;;;;;;;;;;;;;;4237:47;;;;;;;;;;;;;;;4194:90;;4294:40;4337:16;:47;4369:4;4354:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4354:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4354:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4354:29:0;4337:47;;;;4354:29;4337:47;;;;;;;;-1:-1:-1;4337:47:0;4782:24;;4337:47;;-1:-1:-1;4782:24:0;;:64;;;;-1:-1:-1;4822:24:0;;;;4782:64;:148;;;;-1:-1:-1;4896:34:0;;4862:30;;4896:34;4862:30;;4896:34;4862:30;;;4896:34;;4862:68;4782:148;:232;;;;-1:-1:-1;4980:34:0;;4946:30;;4980:34;4946:30;;4980:34;4946:30;;;4980:34;;;;;4946:68;4782:232;:274;;;;-1:-1:-1;5030:12:0;;:26;:12;:26;;4782:274;4765:611;;;5089:45;;;;;;5128:4;5089:45;;;;;;:30;;;;;;:45;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;5089:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5089:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5089:45:0;;-1:-1:-1;5152:9:0;;5148:218;;5330:12;;5300:50;;;;;;:29;5330:12;;;5300:50;;;;;;;;;;;;:29;;;;;;:50;;;;;;;;;;;;;;;5330:12;5300:29;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;5300:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5300:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5300:50:0;5293:58;;;;4056:1326;;;;;;:::o;2155:1895::-;2203:10;2225:37;2265:15;:21;2281:4;2265:21;;;;;;;;;;;;;;;2225:61;;2296:40;2339:16;:47;2371:4;2356:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2356:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2356:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2356:29:0;;;;;;;;;;;;;;;;2339:47;;;;;;;;;;;;;;;2296:90;;2396:40;2439:16;:47;2471:4;2456:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2456:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2456:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2456:29:0;2439:47;;;;2456:29;2439:47;;;;;;;;-1:-1:-1;2439:47:0;2862:24;;2439:47;;-1:-1:-1;2862:24:0;;:33;;:82;;-1:-1:-1;2911:24:0;;;;:33;2862:82;:165;;;-1:-1:-1;2993:34:0;;2960:30;;2993:34;;;;;2960:30;;;;;;:67;2862:165;:248;;;-1:-1:-1;3076:34:0;;3043:30;;3076:34;;;;;;;;;3043:30;;;;:67;2862:248;2845:1199;;;3143:45;;;;;;3182:4;3143:45;;;;;;:30;;;;;;:45;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;3143:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3143:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3143:45:0;;-1:-1:-1;3206:9:0;;3202:341;;3436:42;;;;;;:29;;;:42;;;;;;;;;;;;;;:29;;:42;;;;;;;;;;;;;;;-1:-1:-1;3436:29:0;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;3436:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3436:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3436:42:0;3429:50;;;;3497:31;;;;;;:25;;;:31;;;;;;;;:25;;;;:31;;;;;;;;;;;-1:-1:-1;3497:25:0;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;3497:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3497:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3202:341:0;3663:24;;;;3659:130;;;3744:30;;3707:67;;3744:30;;;;;;3707:67;;;;;;;3659:130;3908:24;;;;3904:130;;;3989:30;3952:67;;3989:30;3952:67;;;3989:30;;;;;3952:67;;;;;;-1:-1:-1;2155:1895:0;;-1:-1:-1;2155:1895:0:o;416:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;291:27::-;;;;;;:::o;1952:197::-;2045:6;2040:103;2057:6;:13;2053:1;:17;2040:103;;;2091:41;2113:6;2120:1;2113:9;;;;;;;;;;;;;;2124:7;2091:21;:41::i;:::-;2072:3;;2040:103;;;;1952:197;;:::o;265:20::-;;;;;;:::o;1057:889::-;1156:5;;;;1142:10;:19;1134:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1259:23;;;1217:39;1259:23;;;:16;:23;;;;;1370;;;;1359:34;;;;;;1355:585;;1409:33;;;;;;;;;;;;1733:29;;;;1729:201;;1787:33;;;;;;;;1729:201;;;1845:16;1841:89;;1881:34;;;;;;;;;1914:1;1881:34;;;;;;;;;;;;1057:889;;;:::o;590:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;874:177::-;961:5;;;;947:10;:19;939:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:12;:28;;;;;;;;;;;;;;;874:177::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pairAllowStates\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0DisallowCount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1DisallowCount\",\"type\":\"uint128\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"renounce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient_\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenAllowStates\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"disallowCount\",\"type\":\"uint128\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"updateTokenAllowState\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"updateTokenAllowStates\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/FeeTo.sol\":\"FeeTo\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeeTo.sol\":{\"keccak256\":\"0xcdf673e1d4b5bff0345605d77f85d2bc3570fa7381ffb1de828400693dbf8c95\",\"urls\":[\"bzz-raw://4f713f3827edd5cfd56ebd992a8b0d015b833c69d82093f2f51388899b5180f5\",\"dweb:/ipfs/Qmdo5E4abeixKTuW5NWXLcps3eN7Gti9pbBTTnA1AJgbye\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506040516110603803806110608339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610ffb806100656000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d97617211610076578063df8ca76a1161005b578063df8ca76a146102ad578063e359f0ed146102e8578063e74b981b1461034a576100be565b80638d976172146102005780638da5cb5b146102a5576100be565b80631f76a7af116100a75780631f76a7af1461013d5780633e2f3f2b1461017057806346904840146101cf576100be565b806313af4035146100c35780631e83409a146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037d565b005b61012b6004803603602081101561010e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661044a565b60408051918252519081900360200190f35b61012b6004803603602081101561015357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e6565b6101a36004803603602081101561018657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c7f565b6040805192151583526fffffffffffffffffffffffffffffffff90911660208301528051918290030190f35b6101d7610cad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603604081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050503515159050610cc9565b6101d7610cff565b6100f6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d1b565b61031b600480360360208110156102fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e87565b604080516fffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b6100f66004803603602081101561036057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ec3565b60005473ffffffffffffffffffffffffffffffffffffffff16331461040357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f466565546f3a3a7365744f776e65723a206e6f7420616c6c6f77656400000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d602081101561050457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d60208110156105c757600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1680156106045750805460ff165b801561062c57508254825461010090046fffffffffffffffffffffffffffffffff9081169116145b801561066857508254815461010090046fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000090920416145b801561068b575060015473ffffffffffffffffffffffffffffffffffffffff1615155b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b5051935083156107de57600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810187905290519187169163a9059cbb916044808201926020929091908290030181600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050506040513d60208110156107d657600080fd5b50516107de57fe5b505050919050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561087657600080fd5b505afa15801561088a573d6000803e3d6000fd5b505050506040513d60208110156108a057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1615806109a15750805460ff16155b806109ca5750825482546fffffffffffffffffffffffffffffffff918216610100909104909116115b80610a065750825481547001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff90811661010090920416115b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b158015610a7757600080fd5b505afa158015610a8b573d6000803e3d6000fd5b505050506040513d6020811015610aa157600080fd5b505193508315610bec57604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820181905260248201879052915163a9059cbb916044808201926020929091908290030181600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b5051610b5357fe5b604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201819052825190926389afcb4492602480820193918290030181600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050506040513d6040811015610be957600080fd5b50505b815460ff1615610c3a57815483546101009091046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161783555b805460ff16156107de575482546fffffffffffffffffffffffffffffffff90811661010090920416700100000000000000000000000000000000021790915550919050565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005b8251811015610cfa57610cf2838281518110610ce457fe5b602002602001015183610d1b565b600101610ccc565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610f9e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020805460ff16151582151514610cfa5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151780825561010090046fffffffffffffffffffffffffffffffff16610e345780547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff16610100178155610cfa565b81610cfa5780546fffffffffffffffffffffffffffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff909116178155505050565b6003602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f7b6023913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fe466565546f3a3a736574466565526563697069656e743a206e6f7420616c6c6f776564466565546f3a3a757064617465546f6b656e416c6c6f7753746174653a206e6f7420616c6c6f776564a265627a7a723158208817d1ae30143a8846a0845731b2d88c3b34d3c4fe337e9dc22a10777d8cb23b64736f6c63430005100032",
      "bin": "608060405234801561001057600080fd5b506040516110603803806110608339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610ffb806100656000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d97617211610076578063df8ca76a1161005b578063df8ca76a146102ad578063e359f0ed146102e8578063e74b981b1461034a576100be565b80638d976172146102005780638da5cb5b146102a5576100be565b80631f76a7af116100a75780631f76a7af1461013d5780633e2f3f2b1461017057806346904840146101cf576100be565b806313af4035146100c35780631e83409a146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037d565b005b61012b6004803603602081101561010e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661044a565b60408051918252519081900360200190f35b61012b6004803603602081101561015357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e6565b6101a36004803603602081101561018657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c7f565b6040805192151583526fffffffffffffffffffffffffffffffff90911660208301528051918290030190f35b6101d7610cad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603604081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050503515159050610cc9565b6101d7610cff565b6100f6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d1b565b61031b600480360360208110156102fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e87565b604080516fffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b6100f66004803603602081101561036057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ec3565b60005473ffffffffffffffffffffffffffffffffffffffff16331461040357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f466565546f3a3a7365744f776e65723a206e6f7420616c6c6f77656400000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d602081101561050457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d60208110156105c757600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1680156106045750805460ff165b801561062c57508254825461010090046fffffffffffffffffffffffffffffffff9081169116145b801561066857508254815461010090046fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000090920416145b801561068b575060015473ffffffffffffffffffffffffffffffffffffffff1615155b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b5051935083156107de57600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810187905290519187169163a9059cbb916044808201926020929091908290030181600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050506040513d60208110156107d657600080fd5b50516107de57fe5b505050919050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561087657600080fd5b505afa15801561088a573d6000803e3d6000fd5b505050506040513d60208110156108a057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1615806109a15750805460ff16155b806109ca5750825482546fffffffffffffffffffffffffffffffff918216610100909104909116115b80610a065750825481547001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff90811661010090920416115b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b158015610a7757600080fd5b505afa158015610a8b573d6000803e3d6000fd5b505050506040513d6020811015610aa157600080fd5b505193508315610bec57604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820181905260248201879052915163a9059cbb916044808201926020929091908290030181600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b5051610b5357fe5b604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201819052825190926389afcb4492602480820193918290030181600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050506040513d6040811015610be957600080fd5b50505b815460ff1615610c3a57815483546101009091046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161783555b805460ff16156107de575482546fffffffffffffffffffffffffffffffff90811661010090920416700100000000000000000000000000000000021790915550919050565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005b8251811015610cfa57610cf2838281518110610ce457fe5b602002602001015183610d1b565b600101610ccc565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610f9e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020805460ff16151582151514610cfa5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151780825561010090046fffffffffffffffffffffffffffffffff16610e345780547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff16610100178155610cfa565b81610cfa5780546fffffffffffffffffffffffffffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff909116178155505050565b6003602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f7b6023913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fe466565546f3a3a736574466565526563697069656e743a206e6f7420616c6c6f776564466565546f3a3a757064617465546f6b656e416c6c6f7753746174653a206e6f7420616c6c6f776564a265627a7a723158208817d1ae30143a8846a0845731b2d88c3b34d3c4fe337e9dc22a10777d8cb23b64736f6c63430005100032",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100be5760003560e01c80638d97617211610076578063df8ca76a1161005b578063df8ca76a146102ad578063e359f0ed146102e8578063e74b981b1461034a576100be565b80638d976172146102005780638da5cb5b146102a5576100be565b80631f76a7af116100a75780631f76a7af1461013d5780633e2f3f2b1461017057806346904840146101cf576100be565b806313af4035146100c35780631e83409a146100f8575b600080fd5b6100f6600480360360208110156100d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037d565b005b61012b6004803603602081101561010e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661044a565b60408051918252519081900360200190f35b61012b6004803603602081101561015357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e6565b6101a36004803603602081101561018657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c7f565b6040805192151583526fffffffffffffffffffffffffffffffff90911660208301528051918290030190f35b6101d7610cad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f66004803603604081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050503515159050610cc9565b6101d7610cff565b6100f6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d1b565b61031b600480360360208110156102fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610e87565b604080516fffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b6100f66004803603602081101561036057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ec3565b60005473ffffffffffffffffffffffffffffffffffffffff16331461040357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f466565546f3a3a7365744f776e65723a206e6f7420616c6c6f77656400000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d602081101561050457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d60208110156105c757600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1680156106045750805460ff165b801561062c57508254825461010090046fffffffffffffffffffffffffffffffff9081169116145b801561066857508254815461010090046fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000090920416145b801561068b575060015473ffffffffffffffffffffffffffffffffffffffff1615155b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b5051935083156107de57600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201526024810187905290519187169163a9059cbb916044808201926020929091908290030181600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050506040513d60208110156107d657600080fd5b50516107de57fe5b505050919050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561087657600080fd5b505afa15801561088a573d6000803e3d6000fd5b505050506040513d60208110156108a057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020825490915060ff1615806109a15750805460ff16155b806109ca5750825482546fffffffffffffffffffffffffffffffff918216610100909104909116115b80610a065750825481547001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff90811661010090920416115b156107de57604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8716916370a08231916024808301926020929190829003018186803b158015610a7757600080fd5b505afa158015610a8b573d6000803e3d6000fd5b505050506040513d6020811015610aa157600080fd5b505193508315610bec57604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820181905260248201879052915163a9059cbb916044808201926020929091908290030181600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b5051610b5357fe5b604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201819052825190926389afcb4492602480820193918290030181600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050506040513d6040811015610be957600080fd5b50505b815460ff1615610c3a57815483546101009091046fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161783555b805460ff16156107de575482546fffffffffffffffffffffffffffffffff90811661010090920416700100000000000000000000000000000000021790915550919050565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005b8251811015610cfa57610cf2838281518110610ce457fe5b602002602001015183610d1b565b600101610ccc565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610f9e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020805460ff16151582151514610cfa5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151780825561010090046fffffffffffffffffffffffffffffffff16610e345780547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff16610100178155610cfa565b81610cfa5780546fffffffffffffffffffffffffffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff909116178155505050565b6003602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f7b6023913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fe466565546f3a3a736574466565526563697069656e743a206e6f7420616c6c6f776564466565546f3a3a757064617465546f6b656e416c6c6f7753746174653a206e6f7420616c6c6f776564a265627a7a723158208817d1ae30143a8846a0845731b2d88c3b34d3c4fe337e9dc22a10777d8cb23b64736f6c63430005100032",
      "srcmap": "244:5140:0:-;;;654:66;8:9:-1;5:2;;;30:1;27;20:12;5:2;654:66:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;654:66:0;699:5;:14;;-1:-1:-1;;;;;699:14:0;;;-1:-1:-1;;;;;;699:14:0;;;;;;;;;244:5140;;;;;;",
      "srcmap-runtime": "244:5140:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;244:5140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;726:142:0;;;;:::i;:::-;;4056:1326;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4056:1326:0;;;;:::i;:::-;;;;;;;;;;;;;;;;2155:1895;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2155:1895:0;;;;:::i;416:59::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;416:59:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;291:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1952:197;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1952:197:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1952:197:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1952:197:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1952:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1952:197:0;;-1:-1:-1;;;;1952:197:0;;;;-1:-1:-1;1952:197:0;:::i;265:20::-;;;:::i;1057:889::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1057:889:0;;;;;;;;;;;:::i;590:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;590:57:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;874:177;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;874:177:0;;;;:::i;726:142::-;799:5;;;;785:10;:19;777:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;847:5;:14;;;;;;;;;;;;;;;726:142::o;4056:1326::-;4101:10;4123:37;4163:15;:21;4179:4;4163:21;;;;;;;;;;;;;;;4123:61;;4194:40;4237:16;:47;4269:4;4254:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4254:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4254:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4254:29:0;;;;;;;;;;;;;;;;4237:47;;;;;;;;;;;;;;;4194:90;;4294:40;4337:16;:47;4369:4;4354:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4354:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4354:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4354:29:0;4337:47;;;;4354:29;4337:47;;;;;;;;-1:-1:-1;4337:47:0;4782:24;;4337:47;;-1:-1:-1;4782:24:0;;:64;;;;-1:-1:-1;4822:24:0;;;;4782:64;:148;;;;-1:-1:-1;4896:34:0;;4862:30;;4896:34;4862:30;;4896:34;4862:30;;;4896:34;;4862:68;4782:148;:232;;;;-1:-1:-1;4980:34:0;;4946:30;;4980:34;4946:30;;4980:34;4946:30;;;4980:34;;;;;4946:68;4782:232;:274;;;;-1:-1:-1;5030:12:0;;:26;:12;:26;;4782:274;4765:611;;;5089:45;;;;;;5128:4;5089:45;;;;;;:30;;;;;;:45;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;5089:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5089:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5089:45:0;;-1:-1:-1;5152:9:0;;5148:218;;5330:12;;5300:50;;;;;;:29;5330:12;;;5300:50;;;;;;;;;;;;:29;;;;;;:50;;;;;;;;;;;;;;;5330:12;5300:29;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;5300:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5300:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5300:50:0;5293:58;;;;4056:1326;;;;;;:::o;2155:1895::-;2203:10;2225:37;2265:15;:21;2281:4;2265:21;;;;;;;;;;;;;;;2225:61;;2296:40;2339:16;:47;2371:4;2356:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2356:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2356:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2356:29:0;;;;;;;;;;;;;;;;2339:47;;;;;;;;;;;;;;;2296:90;;2396:40;2439:16;:47;2471:4;2456:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2456:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2456:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2456:29:0;2439:47;;;;2456:29;2439:47;;;;;;;;-1:-1:-1;2439:47:0;2862:24;;2439:47;;-1:-1:-1;2862:24:0;;:33;;:82;;-1:-1:-1;2911:24:0;;;;:33;2862:82;:165;;;-1:-1:-1;2993:34:0;;2960:30;;2993:34;;;;;2960:30;;;;;;:67;2862:165;:248;;;-1:-1:-1;3076:34:0;;3043:30;;3076:34;;;;;;;;;3043:30;;;;:67;2862:248;2845:1199;;;3143:45;;;;;;3182:4;3143:45;;;;;;:30;;;;;;:45;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;3143:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3143:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3143:45:0;;-1:-1:-1;3206:9:0;;3202:341;;3436:42;;;;;;:29;;;:42;;;;;;;;;;;;;;:29;;:42;;;;;;;;;;;;;;;-1:-1:-1;3436:29:0;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;3436:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3436:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3436:42:0;3429:50;;;;3497:31;;;;;;:25;;;:31;;;;;;;;:25;;;;:31;;;;;;;;;;;-1:-1:-1;3497:25:0;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;3497:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3497:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3202:341:0;3663:24;;;;3659:130;;;3744:30;;3707:67;;3744:30;;;;;;3707:67;;;;;;;3659:130;3908:24;;;;3904:130;;;3989:30;3952:67;;3989:30;3952:67;;;3989:30;;;;;3952:67;;;;;;-1:-1:-1;2155:1895:0;;-1:-1:-1;2155:1895:0:o;416:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;291:27::-;;;;;;:::o;1952:197::-;2045:6;2040:103;2057:6;:13;2053:1;:17;2040:103;;;2091:41;2113:6;2120:1;2113:9;;;;;;;;;;;;;;2124:7;2091:21;:41::i;:::-;2072:3;;2040:103;;;;1952:197;;:::o;265:20::-;;;;;;:::o;1057:889::-;1156:5;;;;1142:10;:19;1134:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1259:23;;;1217:39;1259:23;;;:16;:23;;;;;1370;;;;1359:34;;;;;;1355:585;;1409:33;;;;;;;;;;;;1733:29;;;;1729:201;;1787:33;;;;;;;;1729:201;;;1845:16;1841:89;;1881:34;;;;;;;;;1914:1;1881:34;;;;;;;;;;;;1057:889;;;:::o;590:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;874:177::-;961:5;;;;947:10;:19;939:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:12;:28;;;;;;;;;;;;;;;874:177::o"
    },
    "contracts/FeeTo.sol:IUniswapV2Pair": {
      "abi": [
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/FeeTo.sol\":\"IUniswapV2Pair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeeTo.sol\":{\"keccak256\":\"0xcdf673e1d4b5bff0345605d77f85d2bc3570fa7381ffb1de828400693dbf8c95\",\"urls\":[\"bzz-raw://4f713f3827edd5cfd56ebd992a8b0d015b833c69d82093f2f51388899b5180f5\",\"dweb:/ipfs/Qmdo5E4abeixKTuW5NWXLcps3eN7Gti9pbBTTnA1AJgbye\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/FeeToSetter.sol:FeeToSetter": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "vestingEnd_",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "owner_",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feeTo_",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "feeToSetter_",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "owner_",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "bool",
              "name": "on",
              "type": "bool"
            }
          ],
          "name": "toggleFees",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "vestingEnd",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506040516107433803806107438339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151919290914283116100885760405162461bcd60e51b815260040180806020018281038252603b815260200180610708603b913960400191505060405180910390fd5b600080546001600160a01b039586166001600160a01b03199182161790915560019390935560038054928516928416929092179091556002805491909316911617905561062e806100da6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b14610102578063a2e74af61461010a578063a69ea7761461013d578063c45a01551461015c5761007d565b8063017e7e581461008257806313af4035146100b357806384a1931f146100e8575b600080fd5b61008a610164565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100e6600480360360208110156100c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610180565b005b6100f0610237565b60408051918252519081900360200190f35b61008a61023d565b6100e66004803603602081101561012057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610259565b6100e66004803603602081101561015357600080fd5b503515156103b0565b61008a610521565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1633146101f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105d86022913960400191505060405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015481565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6001544210156102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806105636029913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff163314610324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806105b06028913960400191505060405180910390fd5b60008054604080517fa2e74af600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263a2e74af6926024808201939182900301818387803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b5050505050565b60015442101561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053e6025913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff16331461047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061058c6024913960400191505060405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1663f46901ed826104a55760006104bf565b60025473ffffffffffffffffffffffffffffffffffffffff165b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561039557600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff168156fe466565546f5365747465723a3a746f67676c65466565733a206e6f742074696d6520796574466565546f5365747465723a3a736574466565546f5365747465723a206e6f742074696d6520796574466565546f5365747465723a3a746f67676c65466565733a206e6f7420616c6c6f776564466565546f5365747465723a3a736574466565546f5365747465723a206e6f7420616c6c6f776564466565546f5365747465723a3a7365744f776e65723a206e6f7420616c6c6f776564a265627a7a723158202a2ef915b501f9bd8375c69ff375a9e1e8ae7615f926cfd2b152c194ab98300a64736f6c63430005100032466565546f5365747465723a3a636f6e7374727563746f723a2076657374696e67206d75737420656e64206166746572206465706c6f796d656e74",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x743 CODESIZE SUB DUP1 PUSH2 0x743 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP1 SWAP2 TIMESTAMP DUP4 GT PUSH2 0x88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x708 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH2 0x62E DUP1 PUSH2 0xDA 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 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA69EA776 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x15C JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x84A1931F EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF0 PUSH2 0x237 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x23D JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x259 JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x521 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1F0 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 0x5D8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD TIMESTAMP LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x563 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B0 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA2E74AF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xA2E74AF6 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD TIMESTAMP LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x47B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x58C PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF46901ED DUP3 PUSH2 0x4A5 JUMPI PUSH1 0x0 PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID CHAINID PUSH6 0x65546F536574 PUSH21 0x65723A3A746F67676C65466565733A206E6F742074 PUSH10 0x6D652079657446656554 PUSH16 0x5365747465723A3A736574466565546F MSTORE8 PUSH6 0x747465723A20 PUSH15 0x6F742074696D652079657446656554 PUSH16 0x5365747465723A3A746F67676C654665 PUSH6 0x733A206E6F74 KECCAK256 PUSH2 0x6C6C PUSH16 0x776564466565546F5365747465723A3A PUSH20 0x6574466565546F5365747465723A206E6F742061 PUSH13 0x6C6F776564466565546F536574 PUSH21 0x65723A3A7365744F776E65723A206E6F7420616C6C PUSH16 0x776564A265627A7A723158202A2EF915 0xB5 ADD 0xF9 0xBD DUP4 PUSH22 0xC69FF375A9E1E8AE7615F926CFD2B152C194AB98300A PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN CHAINID PUSH6 0x65546F536574 PUSH21 0x65723A3A636F6E7374727563746F723A2076657374 PUSH10 0x6E67206D75737420656E PUSH5 0x2061667465 PUSH19 0x206465706C6F796D656E740000000000000000 ",
          "sourceMap": "146:1377:1:-;;;301:315;8:9:-1;5:2;;;30:1;27;20:12;5:2;301:315:1;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;301:315:1;;;;;;;;;;;;;;;;;;;420:15;406:29;;398:101;;;;-1:-1:-1;;;398:101:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:7;:18;;-1:-1:-1;;;;;509:18:1;;;-1:-1:-1;;;;;;509:18:1;;;;;;;;537:24;;;;571:5;:14;;;;;;;;;;;;;;;595:5;:14;;;;;;;;;;;146:1377;;;;;;"
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b14610102578063a2e74af61461010a578063a69ea7761461013d578063c45a01551461015c5761007d565b8063017e7e581461008257806313af4035146100b357806384a1931f146100e8575b600080fd5b61008a610164565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100e6600480360360208110156100c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610180565b005b6100f0610237565b60408051918252519081900360200190f35b61008a61023d565b6100e66004803603602081101561012057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610259565b6100e66004803603602081101561015357600080fd5b503515156103b0565b61008a610521565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1633146101f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105d86022913960400191505060405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015481565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6001544210156102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806105636029913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff163314610324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806105b06028913960400191505060405180910390fd5b60008054604080517fa2e74af600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263a2e74af6926024808201939182900301818387803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b5050505050565b60015442101561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053e6025913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff16331461047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061058c6024913960400191505060405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1663f46901ed826104a55760006104bf565b60025473ffffffffffffffffffffffffffffffffffffffff165b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561039557600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff168156fe466565546f5365747465723a3a746f67676c65466565733a206e6f742074696d6520796574466565546f5365747465723a3a736574466565546f5365747465723a206e6f742074696d6520796574466565546f5365747465723a3a746f67676c65466565733a206e6f7420616c6c6f776564466565546f5365747465723a3a736574466565546f5365747465723a206e6f7420616c6c6f776564466565546f5365747465723a3a7365744f776e65723a206e6f7420616c6c6f776564a265627a7a723158202a2ef915b501f9bd8375c69ff375a9e1e8ae7615f926cfd2b152c194ab98300a64736f6c63430005100032",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA69EA776 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x15C JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x84A1931F EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF0 PUSH2 0x237 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x23D JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x259 JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x8A PUSH2 0x521 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1F0 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 0x5D8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD TIMESTAMP LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x563 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B0 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA2E74AF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xA2E74AF6 SWAP3 PUSH1 0x24 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD TIMESTAMP LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x47B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x58C PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF46901ED DUP3 PUSH2 0x4A5 JUMPI PUSH1 0x0 PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID CHAINID PUSH6 0x65546F536574 PUSH21 0x65723A3A746F67676C65466565733A206E6F742074 PUSH10 0x6D652079657446656554 PUSH16 0x5365747465723A3A736574466565546F MSTORE8 PUSH6 0x747465723A20 PUSH15 0x6F742074696D652079657446656554 PUSH16 0x5365747465723A3A746F67676C654665 PUSH6 0x733A206E6F74 KECCAK256 PUSH2 0x6C6C PUSH16 0x776564466565546F5365747465723A3A PUSH20 0x6574466565546F5365747465723A206E6F742061 PUSH13 0x6C6F776564466565546F536574 PUSH21 0x65723A3A7365744F776E65723A206E6F7420616C6C PUSH16 0x776564A265627A7A723158202A2EF915 0xB5 ADD 0xF9 0xBD DUP4 PUSH22 0xC69FF375A9E1E8AE7615F926CFD2B152C194AB98300A PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ",
          "sourceMap": "146:1377:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;146:1377:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;247:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;671:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;671:148:1;;;;:::i;:::-;;219:22;;;:::i;:::-;;;;;;;;;;;;;;;;274:20;;;:::i;881:300::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;881:300:1;;;;:::i;1241:280::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1241:280:1;;;;:::i;191:22::-;;;:::i;247:20::-;;;;;;:::o;671:148::-;744:5;;;;730:10;:19;722:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;798:5;:14;;;;;;;;;;;;;;;671:148::o;219:22::-;;;;:::o;274:20::-;;;;;;:::o;881:300::-;971:10;;952:15;:29;;944:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1059:5;;;;1045:10;:19;1037:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1137:7;;;1119:55;;;;;;1137:7;1119:55;;;;;;;;;1137:7;;;;;1119:41;;:55;;;;;;;;;;;1137:7;;1119:55;;;5:2:-1;;;;30:1;27;20:12;5:2;1119:55:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1119:55:1;;;;881:300;:::o;1241:280::-;1314:10;;1295:15;:29;;1287:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1398:5;;;;1384:10;:19;1376:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1472:7;;;;1454:35;1490:2;:23;;1511:1;1490:23;;;1495:5;;;;1490:23;1454:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;191:22:1;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"vestingEnd_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTo_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToSetter_\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"on\",\"type\":\"bool\"}],\"name\":\"toggleFees\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vestingEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/FeeToSetter.sol\":\"FeeToSetter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeeToSetter.sol\":{\"keccak256\":\"0xcb35aab6bc61c67b72d2b83b9b7bc4401f169344d3e82eb60c82ebcec2fcf12e\",\"urls\":[\"bzz-raw://e015ddc207d4e2f175cf573ae04e0de32950b1053bf83210a4508c80ccec3eb3\",\"dweb:/ipfs/QmSmRW9X6VFxVPVd2kV72V9pfY4L9V3fZcw3TRaKmCb6K1\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506040516107433803806107438339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151919290914283116100885760405162461bcd60e51b815260040180806020018281038252603b815260200180610708603b913960400191505060405180910390fd5b600080546001600160a01b039586166001600160a01b03199182161790915560019390935560038054928516928416929092179091556002805491909316911617905561062e806100da6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b14610102578063a2e74af61461010a578063a69ea7761461013d578063c45a01551461015c5761007d565b8063017e7e581461008257806313af4035146100b357806384a1931f146100e8575b600080fd5b61008a610164565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100e6600480360360208110156100c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610180565b005b6100f0610237565b60408051918252519081900360200190f35b61008a61023d565b6100e66004803603602081101561012057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610259565b6100e66004803603602081101561015357600080fd5b503515156103b0565b61008a610521565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1633146101f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105d86022913960400191505060405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015481565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6001544210156102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806105636029913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff163314610324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806105b06028913960400191505060405180910390fd5b60008054604080517fa2e74af600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263a2e74af6926024808201939182900301818387803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b5050505050565b60015442101561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053e6025913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff16331461047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061058c6024913960400191505060405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1663f46901ed826104a55760006104bf565b60025473ffffffffffffffffffffffffffffffffffffffff165b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561039557600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff168156fe466565546f5365747465723a3a746f67676c65466565733a206e6f742074696d6520796574466565546f5365747465723a3a736574466565546f5365747465723a206e6f742074696d6520796574466565546f5365747465723a3a746f67676c65466565733a206e6f7420616c6c6f776564466565546f5365747465723a3a736574466565546f5365747465723a206e6f7420616c6c6f776564466565546f5365747465723a3a7365744f776e65723a206e6f7420616c6c6f776564a265627a7a723158202a2ef915b501f9bd8375c69ff375a9e1e8ae7615f926cfd2b152c194ab98300a64736f6c63430005100032466565546f5365747465723a3a636f6e7374727563746f723a2076657374696e67206d75737420656e64206166746572206465706c6f796d656e74",
      "bin": "608060405234801561001057600080fd5b506040516107433803806107438339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151919290914283116100885760405162461bcd60e51b815260040180806020018281038252603b815260200180610708603b913960400191505060405180910390fd5b600080546001600160a01b039586166001600160a01b03199182161790915560019390935560038054928516928416929092179091556002805491909316911617905561062e806100da6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b14610102578063a2e74af61461010a578063a69ea7761461013d578063c45a01551461015c5761007d565b8063017e7e581461008257806313af4035146100b357806384a1931f146100e8575b600080fd5b61008a610164565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100e6600480360360208110156100c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610180565b005b6100f0610237565b60408051918252519081900360200190f35b61008a61023d565b6100e66004803603602081101561012057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610259565b6100e66004803603602081101561015357600080fd5b503515156103b0565b61008a610521565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1633146101f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105d86022913960400191505060405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015481565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6001544210156102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806105636029913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff163314610324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806105b06028913960400191505060405180910390fd5b60008054604080517fa2e74af600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263a2e74af6926024808201939182900301818387803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b5050505050565b60015442101561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053e6025913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff16331461047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061058c6024913960400191505060405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1663f46901ed826104a55760006104bf565b60025473ffffffffffffffffffffffffffffffffffffffff165b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561039557600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff168156fe466565546f5365747465723a3a746f67676c65466565733a206e6f742074696d6520796574466565546f5365747465723a3a736574466565546f5365747465723a206e6f742074696d6520796574466565546f5365747465723a3a746f67676c65466565733a206e6f7420616c6c6f776564466565546f5365747465723a3a736574466565546f5365747465723a206e6f7420616c6c6f776564466565546f5365747465723a3a7365744f776e65723a206e6f7420616c6c6f776564a265627a7a723158202a2ef915b501f9bd8375c69ff375a9e1e8ae7615f926cfd2b152c194ab98300a64736f6c63430005100032466565546f5365747465723a3a636f6e7374727563746f723a2076657374696e67206d75737420656e64206166746572206465706c6f796d656e74",
      "bin-runtime": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b14610102578063a2e74af61461010a578063a69ea7761461013d578063c45a01551461015c5761007d565b8063017e7e581461008257806313af4035146100b357806384a1931f146100e8575b600080fd5b61008a610164565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100e6600480360360208110156100c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610180565b005b6100f0610237565b60408051918252519081900360200190f35b61008a61023d565b6100e66004803603602081101561012057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610259565b6100e66004803603602081101561015357600080fd5b503515156103b0565b61008a610521565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1633146101f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105d86022913960400191505060405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015481565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6001544210156102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806105636029913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff163314610324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806105b06028913960400191505060405180910390fd5b60008054604080517fa2e74af600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169263a2e74af6926024808201939182900301818387803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b5050505050565b60015442101561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053e6025913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff16331461047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061058c6024913960400191505060405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1663f46901ed826104a55760006104bf565b60025473ffffffffffffffffffffffffffffffffffffffff165b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561039557600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff168156fe466565546f5365747465723a3a746f67676c65466565733a206e6f742074696d6520796574466565546f5365747465723a3a736574466565546f5365747465723a206e6f742074696d6520796574466565546f5365747465723a3a746f67676c65466565733a206e6f7420616c6c6f776564466565546f5365747465723a3a736574466565546f5365747465723a206e6f7420616c6c6f776564466565546f5365747465723a3a7365744f776e65723a206e6f7420616c6c6f776564a265627a7a723158202a2ef915b501f9bd8375c69ff375a9e1e8ae7615f926cfd2b152c194ab98300a64736f6c63430005100032",
      "srcmap": "146:1377:1:-;;;301:315;8:9:-1;5:2;;;30:1;27;20:12;5:2;301:315:1;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;301:315:1;;;;;;;;;;;;;;;;;;;420:15;406:29;;398:101;;;;-1:-1:-1;;;398:101:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:7;:18;;-1:-1:-1;;;;;509:18:1;;;-1:-1:-1;;;;;;509:18:1;;;;;;;;537:24;;;;571:5;:14;;;;;;;;;;;;;;;595:5;:14;;;;;;;;;;;146:1377;;;;;;",
      "srcmap-runtime": "146:1377:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;146:1377:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;247:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;671:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;671:148:1;;;;:::i;:::-;;219:22;;;:::i;:::-;;;;;;;;;;;;;;;;274:20;;;:::i;881:300::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;881:300:1;;;;:::i;1241:280::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1241:280:1;;;;:::i;191:22::-;;;:::i;247:20::-;;;;;;:::o;671:148::-;744:5;;;;730:10;:19;722:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;798:5;:14;;;;;;;;;;;;;;;671:148::o;219:22::-;;;;:::o;274:20::-;;;;;;:::o;881:300::-;971:10;;952:15;:29;;944:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1059:5;;;;1045:10;:19;1037:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1137:7;;;1119:55;;;;;;1137:7;1119:55;;;;;;;;;1137:7;;;;;1119:41;;:55;;;;;;;;;;;1137:7;;1119:55;;;5:2:-1;;;;30:1;27;20:12;5:2;1119:55:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1119:55:1;;;;881:300;:::o;1241:280::-;1314:10;;1295:15;:29;;1287:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1398:5;;;;1384:10;:19;1376:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1472:7;;;;1454:35;1490:2;:23;;1511:1;1490:23;;;1495:5;;;;1490:23;1454:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;191:22:1;;;;;;:::o"
    },
    "contracts/FeeToSetter.sol:IUniswapV2Factory": {
      "abi": [
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/FeeToSetter.sol\":\"IUniswapV2Factory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeeToSetter.sol\":{\"keccak256\":\"0xcb35aab6bc61c67b72d2b83b9b7bc4401f169344d3e82eb60c82ebcec2fcf12e\",\"urls\":[\"bzz-raw://e015ddc207d4e2f175cf573ae04e0de32950b1053bf83210a4508c80ccec3eb3\",\"dweb:/ipfs/QmSmRW9X6VFxVPVd2kV72V9pfY4L9V3fZcw3TRaKmCb6K1\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/GovernorAlpha.sol:GovernorAlpha": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "timelock_",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "uni_",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "ProposalCanceled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address[]",
              "name": "targets",
              "type": "address[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "string[]",
              "name": "signatures",
              "type": "string[]"
            },
            {
              "indexed": false,
              "internalType": "bytes[]",
              "name": "calldatas",
              "type": "bytes[]"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "startBlock",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "endBlock",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "name": "ProposalCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "ProposalExecuted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "ProposalQueued",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "voter",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "support",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "votes",
              "type": "uint256"
            }
          ],
          "name": "VoteCast",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "BALLOT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "DOMAIN_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            }
          ],
          "name": "cancel",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "support",
              "type": "bool"
            }
          ],
          "name": "castVote",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "support",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "castVoteBySig",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            }
          ],
          "name": "execute",
          "outputs": [],
          "payable": true,
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            }
          ],
          "name": "getActions",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "targets",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            },
            {
              "internalType": "string[]",
              "name": "signatures",
              "type": "string[]"
            },
            {
              "internalType": "bytes[]",
              "name": "calldatas",
              "type": "bytes[]"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "voter",
              "type": "address"
            }
          ],
          "name": "getReceipt",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "hasVoted",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "support",
                  "type": "bool"
                },
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "internalType": "struct GovernorAlpha.Receipt",
              "name": "",
              "type": "tuple"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "latestProposalIds",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "proposalCount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "proposalMaxOperations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "proposalThreshold",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "proposals",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "startBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "endBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "forVotes",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "againstVotes",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "canceled",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "executed",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address[]",
              "name": "targets",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "values",
              "type": "uint256[]"
            },
            {
              "internalType": "string[]",
              "name": "signatures",
              "type": "string[]"
            },
            {
              "internalType": "bytes[]",
              "name": "calldatas",
              "type": "bytes[]"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "name": "propose",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            }
          ],
          "name": "queue",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "quorumVotes",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "proposalId",
              "type": "uint256"
            }
          ],
          "name": "state",
          "outputs": [
            {
              "internalType": "enum GovernorAlpha.ProposalState",
              "name": "",
              "type": "uint8"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "timelock",
          "outputs": [
            {
              "internalType": "contract TimelockInterface",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "uni",
          "outputs": [
            {
              "internalType": "contract UniInterface",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "votingDelay",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "votingPeriod",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040523480156200001157600080fd5b50604051620039b4380380620039b4833981016040819052620000349162000079565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000e4565b80516200007381620000ca565b92915050565b600080604083850312156200008d57600080fd5b60006200009b858562000066565b9250506020620000ae8582860162000066565b9150509250929050565b60006001600160a01b03821662000073565b620000d581620000b8565b8114620000e157600080fd5b50565b6138c080620000f46000396000f3fe6080604052600436106101755760003560e01c80634634c61f116100cb578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103d0578063edc9af95146103fd578063fe0d94c11461041257610175565b8063da95691a1461037b578063ddf0b0091461039b578063deaaa7cc146103bb57610175565b8063b58131b0116100b0578063b58131b01461032f578063d33219b414610344578063da35c6641461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125cf565b610425565b6040516101af99989796959493929190613628565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af9190613395565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613451565b34801561020857600080fd5b5061021c610217366004612627565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244c565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125cf565b610512565b6040516101af9493929190613348565b3480156102a457600080fd5b506101cd6107ea565b3480156102b957600080fd5b506102cd6102c83660046125cf565b6107ef565b6040516101af9190613443565b3480156102e657600080fd5b5061021c6102f53660046125cf565b6109ba565b34801561030657600080fd5b5061021c610315366004612657565b610c8c565b34801561032657600080fd5b506101cd610e6e565b34801561033b57600080fd5b506101cd610e73565b34801561035057600080fd5b50610359610e82565b6040516101af9190613435565b34801561037257600080fd5b506101cd610e9e565b34801561038757600080fd5b506101cd610396366004612472565b610ea4565b3480156103a757600080fd5b5061021c6103b63660046125cf565b6113b5565b3480156103c757600080fd5b506101cd6116ac565b3480156103dc57600080fd5b506103f06103eb3660046125ed565b6116b8565b6040516101af9190613572565b34801561040957600080fd5b50610359611739565b61021c6104203660046125cf565b611755565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104d6338383611989565b5050565b60046020526000908152604090205481565b6040516104f890613239565b604051809103902081565b6a211654585005212800000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610576575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f357602002820191906000526020600020905b8154815260200190600101908083116105df575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001906001019061061b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b50505050508152602001906001019061070b565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108035750600082115b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613482565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108675760029150506109b5565b8060070154431161087c5760009150506109b5565b806008015443116108915760019150506109b5565b80600a015481600901541115806108b257506108ab610503565b8160090154105b156108c15760039150506109b5565b60028101546108d45760049150506109b5565b600b810154610100900460ff16156108f05760079150506109b5565b6002810154600054604080517fc1a287e2000000000000000000000000000000000000000000000000000000008152905161099f939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099a919081019061257c565b611c14565b42106109af5760069150506109b5565b60059150505b919050565b60006109c5826107ef565b905060078160078111156109d557fe5b1415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613542565b6000828152600360205260409020610a23610e73565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a59904390611c5a565b6040518363ffffffff1660e01b8152600401610a7692919061326a565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac691908101906126bf565b6bffffffffffffffffffffffff1610610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134e2565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c4f5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7a57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610baf57fe5b9060005260206000200154856005018581548110610bc957fe5b90600052602060002001866006018681548110610be257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c11959493929190613307565b600060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505060019092019150610b3b9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7f9190613395565b60405180910390a1505050565b6000604051610c9a90613239565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d01611c9c565b30604051602001610d1594939291906133a3565b6040516020818303038152906040528051906020012090506000604051610d3b90613244565b604051908190038120610d5491899089906020016133d8565b60405160208183030381529060405280519060200120905060008282604051602001610d81929190613208565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbe9493929190613400565b6020604051602081039080840390855afa158015610de0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613522565b610e63818a8a611989565b505050505050505050565b600a90565b6a084595161401484a00000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610eae610e73565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610edc904390611c5a565b6040518363ffffffff1660e01b8152600401610ef992919061324f565b60206040518083038186803b158015610f1157600080fd5b505afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4991908101906126bf565b6bffffffffffffffffffffffff1611610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613512565b84518651148015610fa0575083518651145b8015610fad575082518651145b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134d2565b855161101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613502565b611023610e6e565b8651111561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134b2565b33600090815260046020526040902054801561110e57600061107e826107ef565b9050600181600781111561108e57fe5b14156110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613532565b60008160078111156110d457fe5b141561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134a2565b505b600061111c4361099a6107ea565b9050600061112c8261099a61048b565b600280546001019055905061113f611e4c565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611249929190611ece565b5060808201518051611265916004840191602090910190611f58565b5060a08201518051611281916005840191602090910190611f9f565b5060c0820151805161129d916006840191602090910190611ff8565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161139d99989796959493929190613580565b60405180910390a15193505050505b95945050505050565b60046113c0826107ef565b60078111156113cb57fe5b14611402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613462565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148193429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096257600080fd5b905060005b60038301548110156116725761166a8360030182815481106114a457fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114d957fe5b90600052602060002001548560050184815481106114f357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b50505050508660060185815481106115b357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505086611ca0565b600101611486565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7f90859084906136ae565b6040516104f890613244565b6116c0612051565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6005611760826107ef565b600781111561176b57fe5b146117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613472565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194d5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061181f57fe5b906000526020600020015484600301848154811061183957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186e57fe5b906000526020600020015486600501868154811061188857fe5b906000526020600020018760060187815481106118a157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d0959493929190613307565b6000604051808303818588803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611944919081019061259a565b506001016117e0565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197d9190613395565b60405180910390a15050565b6001611994836107ef565b600781111561199f57fe5b146119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613552565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613492565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa2918a9160040161326a565b60206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af291908101906126bf565b90508315611b2057611b168360090154826bffffffffffffffffffffffff16611c14565b6009840155611b42565b611b3c83600a0154826bffffffffffffffffffffffff16611c14565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c04908890889088908690613278565b60405180910390a1505050505050565b600082820183811015611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134c2565b9392505050565b600082821115611c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613562565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdb90889088908890889088906020016132ad565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0d9190613395565b60206040518083038186803b158015611d2557600080fd5b505afa158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5d919081019061255e565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134f2565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df290889088908890889088906004016132ad565b602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e44919081019061257c565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f48579160200282015b82811115611f4857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eee565b50611f54929150612071565b5090565b828054828255906000526020600020908101928215611f93579160200282015b82811115611f93578251825591602001919060010190611f78565b50611f549291506120ad565b828054828255906000526020600020908101928215611fec579160200282015b82811115611fec5782518051611fdc9184916020909101906120c7565b5091602001919060010190611fbf565b50611f54929150612134565b828054828255906000526020600020908101928215612045579160200282015b8281111561204557825180516120359184916020909101906120c7565b5091602001919060010190612018565b50611f54929150612157565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f545780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612077565b61048f91905b80821115611f5457600081556001016120b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210857805160ff1916838001178555611f93565b82800160010185558215611f935791820182811115611f93578251825591602001919060010190611f78565b61048f91905b80821115611f5457600061214e828261217a565b5060010161213a565b61048f91905b80821115611f54576000612171828261217a565b5060010161215d565b50805460018160011615610100020316600290046000825580601f106121a057506121be565b601f0160209004906000526020600020908101906121be91906120ad565b50565b803561173381613845565b600082601f8301126121dd57600080fd5b81356121f06121eb826136e3565b6136bc565b9150818183526020840193506020810190508385602084028201111561221557600080fd5b60005b83811015612241578161222b88826121c1565b8452506020928301929190910190600101612218565b5050505092915050565b600082601f83011261225c57600080fd5b813561226a6121eb826136e3565b81815260209384019390925082018360005b83811015612241578135860161229288826123a1565b845250602092830192919091019060010161227c565b600082601f8301126122b957600080fd5b81356122c76121eb826136e3565b81815260209384019390925082018360005b8381101561224157813586016122ef88826123a1565b84525060209283019291909101906001016122d9565b600082601f83011261231657600080fd5b81356123246121eb826136e3565b9150818183526020840193506020810190508385602084028201111561234957600080fd5b60005b83811015612241578161235f888261238b565b845250602092830192919091019060010161234c565b803561173381613859565b805161173381613859565b803561173381613862565b805161173381613862565b600082601f8301126123b257600080fd5b81356123c06121eb82613704565b915080825260208301602083018583830111156123dc57600080fd5b6123e78382846137db565b50505092915050565b600082601f83011261240157600080fd5b815161240f6121eb82613704565b9150808252602083016020830185838301111561242b57600080fd5b6123e78382846137e7565b80356117338161386b565b805161173381613874565b60006020828403121561245e57600080fd5b600061246a84846121c1565b949350505050565b600080600080600060a0868803121561248a57600080fd5b853567ffffffffffffffff8111156124a157600080fd5b6124ad888289016121cc565b955050602086013567ffffffffffffffff8111156124ca57600080fd5b6124d688828901612305565b945050604086013567ffffffffffffffff8111156124f357600080fd5b6124ff888289016122a8565b935050606086013567ffffffffffffffff81111561251c57600080fd5b6125288882890161224b565b925050608086013567ffffffffffffffff81111561254557600080fd5b612551888289016123a1565b9150509295509295909350565b60006020828403121561257057600080fd5b600061246a8484612380565b60006020828403121561258e57600080fd5b600061246a8484612396565b6000602082840312156125ac57600080fd5b815167ffffffffffffffff8111156125c357600080fd5b61246a848285016123f0565b6000602082840312156125e157600080fd5b600061246a848461238b565b6000806040838503121561260057600080fd5b600061260c858561238b565b925050602061261d858286016121c1565b9150509250929050565b6000806040838503121561263a57600080fd5b6000612646858561238b565b925050602061261d85828601612375565b600080600080600060a0868803121561266f57600080fd5b600061267b888861238b565b955050602061268c88828901612375565b945050604061269d88828901612436565b93505060606126ae8882890161238b565b92505060806125518882890161238b565b6000602082840312156126d157600080fd5b600061246a8484612441565b60006126e98383612718565b505060200190565b6000611c5383836128ba565b60006126e983836128a0565b612712816137b3565b82525050565b61271281613769565b600061272c8261375c565b6127368185613760565b93506127418361374a565b8060005b8381101561276f57815161275988826126dd565b97506127648361374a565b925050600101612745565b509495945050505050565b60006127858261375c565b61278f8185613760565b9350836020820285016127a18561374a565b8060005b858110156127db57848403895281516127be85826126f1565b94506127c98361374a565b60209a909a01999250506001016127a5565b5091979650505050505050565b60006127f38261375c565b6127fd8185613760565b93508360208202850161280f8561374a565b8060005b858110156127db578484038952815161282c85826126f1565b94506128378361374a565b60209a909a0199925050600101612813565b60006128548261375c565b61285e8185613760565b93506128698361374a565b8060005b8381101561276f57815161288188826126fd565b975061288c8361374a565b92505060010161286d565b61271281613774565b6127128161048f565b6127126128b58261048f565b61048f565b60006128c58261375c565b6128cf8185613760565b93506128df8185602086016137e7565b6128e881613813565b9093019392505050565b60008154600181166000811461290f576001811461295357612992565b607f60028304166129208187613760565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612992565b600282046129618187613760565b955061296c85613750565b60005b8281101561298b5781548882015260019091019060200161296f565b8701945050505b505092915050565b612712816137ba565b612712816137c5565b60006129b9604483613760565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a3e604583613760565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ac36002836109b5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612afc602983613760565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612b5b602d83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612bba605983613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612c3f602883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612c9e601183613760565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612cd76043836109b5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612d5c6027836109b5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612dbb604483613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e40602f83613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e9f604483613760565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f24602c83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612f83603f83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612fe2602f83613760565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000613041605883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130c6603683613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613125602a83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613184601583613760565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131c18482612897565b5060208201516131d46020850182612897565b5060408201516131e760408501826131ff565b50505050565b6127128161379c565b612712816137d0565b612712816137a2565b600061321382612ab6565b915061321f82856128a9565b60208201915061322f82846128a9565b5060200192915050565b600061173382612cca565b600061173382612d4f565b6040810161325d8285612709565b611c5360208301846128a0565b6040810161325d8285612718565b608081016132868287612718565b61329360208301866128a0565b6132a06040830185612897565b6113ac60608301846131f6565b60a081016132bb8288612718565b6132c860208301876128a0565b81810360408301526132da81866128ba565b905081810360608301526132ee81856128ba565b90506132fd60808301846128a0565b9695505050505050565b60a081016133158288612718565b61332260208301876128a0565b818103604083015261333481866128f2565b905081810360608301526132ee81856128f2565b608080825281016133598187612721565b9050818103602083015261336d8186612849565b9050818103604083015261338181856127e8565b905081810360608301526132fd818461277a565b6020810161173382846128a0565b608081016133b182876128a0565b6133be60208301866128a0565b6133cb60408301856128a0565b6113ac6060830184612718565b606081016133e682866128a0565b6133f360208301856128a0565b61246a6040830184612897565b6080810161340e82876128a0565b61341b60208301866131ed565b61342860408301856128a0565b6113ac60608301846128a0565b60208101611733828461299a565b6020810161173382846129a3565b60208082528101611c5381846128ba565b60208082528101611733816129ac565b6020808252810161173381612a31565b6020808252810161173381612aef565b6020808252810161173381612b4e565b6020808252810161173381612bad565b6020808252810161173381612c32565b6020808252810161173381612c91565b6020808252810161173381612dae565b6020808252810161173381612e33565b6020808252810161173381612e92565b6020808252810161173381612f17565b6020808252810161173381612f76565b6020808252810161173381612fd5565b6020808252810161173381613034565b60208082528101611733816130b9565b6020808252810161173381613118565b6020808252810161173381613177565b6060810161173382846131b0565b610120810161358f828c6128a0565b61359c602083018b612709565b81810360408301526135ae818a612721565b905081810360608301526135c28189612849565b905081810360808301526135d681886127e8565b905081810360a08301526135ea818761277a565b90506135f960c08301866128a0565b61360660e08301856128a0565b81810361010083015261361981846128ba565b9b9a5050505050505050505050565b6101208101613637828c6128a0565b613644602083018b612718565b613651604083018a6128a0565b61365e60608301896128a0565b61366b60808301886128a0565b61367860a08301876128a0565b61368560c08301866128a0565b61369260e0830185612897565b6136a0610100830184612897565b9a9950505050505050505050565b6040810161325d82856128a0565b60405181810167ffffffffffffffff811182821017156136db57600080fd5b604052919050565b600067ffffffffffffffff8211156136fa57600080fd5b5060209081020190565b600067ffffffffffffffff82111561371b57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061173382613783565b151590565b806109b58161383b565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611733825b600061173382613769565b600061173382613779565b6000611733826137a2565b82818337506000910152565b60005b838110156138025781810151838201526020016137ea565b838111156131e75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121be57fe5b61384e81613769565b81146121be57600080fd5b61384e81613774565b61384e8161048f565b61384e8161379c565b61384e816137a256fea365627a7a72315820fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb26c6578706572696d656e74616cf564736f6c63430005100040",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x39B4 CODESIZE SUB DUP1 PUSH3 0x39B4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x79 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH3 0xE4 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x73 DUP2 PUSH3 0xCA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x9B DUP6 DUP6 PUSH3 0x66 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0xAE DUP6 DUP3 DUP7 ADD PUSH3 0x66 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x73 JUMP JUMPDEST PUSH3 0xD5 DUP2 PUSH3 0xB8 JUMP JUMPDEST DUP2 EQ PUSH3 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x38C0 DUP1 PUSH3 0xF4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x175 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4634C61F GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xDA95691A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE23A9A52 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0xEDC9AF95 EQ PUSH2 0x3FD JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x412 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0xDA95691A EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x3BB JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0xB58131B0 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x366 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x4634C61F EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x31A JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 GT PUSH2 0x12D JUMPI DUP1 PUSH4 0x3932ABB1 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x2DA JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x328DD982 EQ PUSH2 0x268 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x15E JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x21E JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19A PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3628 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x48B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1EF PUSH2 0x492 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3451 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x4CB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x244C JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x4EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x503 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x512 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3348 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x7EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3443 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x2F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x9BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x315 CALLDATASIZE PUSH1 0x4 PUSH2 0x2657 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE73 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x359 PUSH2 0xE82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3435 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x396 CALLDATASIZE PUSH1 0x4 PUSH2 0x2472 JUMP JUMPDEST PUSH2 0xEA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x13B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x16AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F0 PUSH2 0x3EB CALLDATASIZE PUSH1 0x4 PUSH2 0x25ED JUMP JUMPDEST PUSH2 0x16B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3572 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x359 PUSH2 0x1739 JUMP JUMPDEST PUSH2 0x21C PUSH2 0x420 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x1755 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x8 DUP6 ADD SLOAD PUSH1 0x9 DUP7 ADD SLOAD PUSH1 0xA DUP8 ADD SLOAD PUSH1 0xB SWAP1 SWAP8 ADD SLOAD SWAP6 SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP6 AND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xFF DUP1 DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV AND DUP10 JUMP JUMPDEST PUSH2 0x9D80 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020476F7665726E6F7220416C70686100000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x4D6 CALLER DUP4 DUP4 PUSH2 0x1989 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F8 SWAP1 PUSH2 0x3239 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH11 0x2116545850052128000000 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x3 ADD DUP2 PUSH1 0x4 ADD DUP3 PUSH1 0x5 ADD DUP4 PUSH1 0x6 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x576 JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x5DF JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6A5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D0 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 0x6B3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x61B JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x795 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C0 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 0x7A3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x70B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x803 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3482 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0xB DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x867 JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST DUP1 PUSH1 0x7 ADD SLOAD NUMBER GT PUSH2 0x87C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST DUP1 PUSH1 0x8 ADD SLOAD NUMBER GT PUSH2 0x891 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST DUP1 PUSH1 0xA ADD SLOAD DUP2 PUSH1 0x9 ADD SLOAD GT ISZERO DUP1 PUSH2 0x8B2 JUMPI POP PUSH2 0x8AB PUSH2 0x503 JUMP JUMPDEST DUP2 PUSH1 0x9 ADD SLOAD LT JUMPDEST ISZERO PUSH2 0x8C1 JUMPI PUSH1 0x3 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0x8D4 JUMPI PUSH1 0x4 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0xB DUP2 ADD SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x7 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC1A287E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH2 0x99F SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x976 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x99A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x257C JUMP JUMPDEST PUSH2 0x1C14 JUMP JUMPDEST TIMESTAMP LT PUSH2 0x9AF JUMPI PUSH1 0x6 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x5 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C5 DUP3 PUSH2 0x7EF JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x9D5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xA0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3542 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xA23 PUSH2 0xE73 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 DUP3 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP3 PUSH4 0x782D6FE1 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH2 0xA59 SWAP1 NUMBER SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA76 SWAP3 SWAP2 SWAP1 PUSH2 0x326A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xAC6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BF JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xB0B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xC4F JUMPI PUSH1 0x0 SLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xB7A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xBAF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xBC9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xBE2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC11 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xB3B SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xC7F SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xC9A SWAP1 PUSH2 0x3239 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x16 DUP3 MSTORE PUSH32 0x556E697377617020476F7665726E6F7220416C70686100000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xA5E0CFCFBED4E8AF9BBB6C62A3DCBD52DEDB58A723EE69F4D714B41681F2C447 PUSH2 0xD01 PUSH2 0x1C9C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD15 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x33A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xD3B SWAP1 PUSH2 0x3244 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xD54 SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x33D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD81 SWAP3 SWAP2 SWAP1 PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xDBE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3400 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3522 JUMP JUMPDEST PUSH2 0xE63 DUP2 DUP11 DUP11 PUSH2 0x1989 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SWAP1 JUMP JUMPDEST PUSH11 0x84595161401484A000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAE PUSH2 0xE73 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x782D6FE1 SWAP1 CALLER SWAP1 PUSH2 0xEDC SWAP1 NUMBER SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEF9 SWAP3 SWAP2 SWAP1 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF49 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BF JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0xF8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3512 JUMP JUMPDEST DUP5 MLOAD DUP7 MLOAD EQ DUP1 ISZERO PUSH2 0xFA0 JUMPI POP DUP4 MLOAD DUP7 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0xFAD JUMPI POP DUP3 MLOAD DUP7 MLOAD EQ JUMPDEST PUSH2 0xFE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34D2 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x101B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3502 JUMP JUMPDEST PUSH2 0x1023 PUSH2 0xE6E JUMP JUMPDEST DUP7 MLOAD GT ISZERO PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34B2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x110E JUMPI PUSH1 0x0 PUSH2 0x107E DUP3 PUSH2 0x7EF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x108E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x10C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3532 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x10D4 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x110C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34A2 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x111C NUMBER PUSH2 0x99A PUSH2 0x7EA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x112C DUP3 PUSH2 0x99A PUSH2 0x48B JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x113F PUSH2 0x1E4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x3 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1249 SWAP3 SWAP2 SWAP1 PUSH2 0x1ECE JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1265 SWAP2 PUSH1 0x4 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F58 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1281 SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F9F JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x129D SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1FF8 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x7 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x8 ADD SSTORE PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x9 ADD SSTORE PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0xA ADD SSTORE PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x4 PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP13 DUP13 DUP13 DUP13 DUP10 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0x139D SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3580 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x13C0 DUP3 PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x13CB JUMPI INVALID JUMPDEST EQ PUSH2 0x1402 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3462 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD DUP3 MLOAD PUSH32 0x6A42B8F800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP5 SWAP4 PUSH2 0x1481 SWAP4 TIMESTAMP SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 PUSH4 0x6A42B8F8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1672 JUMPI PUSH2 0x166A DUP4 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14A4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x14D9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x14F3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x159F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1574 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x159F 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 0x1582 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x15B3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x165F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1634 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x165F 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 0x1642 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x1CA0 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1486 JUMP JUMPDEST POP PUSH1 0x2 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 SWAP1 PUSH2 0xC7F SWAP1 DUP6 SWAP1 DUP5 SWAP1 PUSH2 0x36AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F8 SWAP1 PUSH2 0x3244 JUMP JUMPDEST PUSH2 0x16C0 PUSH2 0x2051 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE PUSH1 0xC ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1760 DUP3 PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x176B JUMPI INVALID JUMPDEST EQ PUSH2 0x17A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x181F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x3 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1839 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP7 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x186E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x5 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1888 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x6 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x18A1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18D0 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1944 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x259A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x17E0 JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x197D SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1994 DUP4 PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x199F JUMPI INVALID JUMPDEST EQ PUSH2 0x19D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3552 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE PUSH1 0xC DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1A46 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3492 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x7 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x782D6FE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x782D6FE1 SWAP2 PUSH2 0x1AA2 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x326A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1ACE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1AF2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BF JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1B20 JUMPI PUSH2 0x1B16 DUP4 PUSH1 0x9 ADD SLOAD DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x9 DUP5 ADD SSTORE PUSH2 0x1B42 JUMP JUMPDEST PUSH2 0x1B3C DUP4 PUSH1 0xA ADD SLOAD DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0xA DUP5 ADD SSTORE JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP1 SWAP2 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFF AND PUSH3 0x10000 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x1C04 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x3278 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1C53 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34C2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1C96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3562 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x1CDB SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x32AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D0D SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1D5D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x255E JUMP JUMPDEST ISZERO PUSH2 0x1D94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34F2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3A66F90100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x1DF2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x32AD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1E44 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x257C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1F48 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1F48 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1EEE JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x2071 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1F93 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1F93 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1F78 JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x20AD JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1FEC JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1FEC JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x1FDC SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x20C7 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1FBF JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x2134 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2045 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2045 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2035 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x20C7 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2018 JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x20B3 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 0x2108 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1F93 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1F93 JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x1F93 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1F78 JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 PUSH2 0x214E DUP3 DUP3 PUSH2 0x217A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x213A JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 PUSH2 0x2171 DUP3 DUP3 PUSH2 0x217A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x215D JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x21A0 JUMPI POP PUSH2 0x21BE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21BE SWAP2 SWAP1 PUSH2 0x20AD JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x3845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x21DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21F0 PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST PUSH2 0x36BC JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 PUSH2 0x222B DUP9 DUP3 PUSH2 0x21C1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2218 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x225C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x226A PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2292 DUP9 DUP3 PUSH2 0x23A1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x227C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x22C7 PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x22EF DUP9 DUP3 PUSH2 0x23A1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2324 PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 PUSH2 0x235F DUP9 DUP3 PUSH2 0x238B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x234C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x3859 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1733 DUP2 PUSH2 0x3859 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x3862 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1733 DUP2 PUSH2 0x3862 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23C0 PUSH2 0x21EB DUP3 PUSH2 0x3704 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E7 DUP4 DUP3 DUP5 PUSH2 0x37DB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x240F PUSH2 0x21EB DUP3 PUSH2 0x3704 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x242B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E7 DUP4 DUP3 DUP5 PUSH2 0x37E7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x386B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1733 DUP2 PUSH2 0x3874 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x245E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x21C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x248A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24AD DUP9 DUP3 DUP10 ADD PUSH2 0x21CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24D6 DUP9 DUP3 DUP10 ADD PUSH2 0x2305 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24FF DUP9 DUP3 DUP10 ADD PUSH2 0x22A8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x251C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2528 DUP9 DUP3 DUP10 ADD PUSH2 0x224B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2551 DUP9 DUP3 DUP10 ADD PUSH2 0x23A1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x2380 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x258E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x2396 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x25C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x246A DUP5 DUP3 DUP6 ADD PUSH2 0x23F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x238B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x260C DUP6 DUP6 PUSH2 0x238B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261D DUP6 DUP3 DUP7 ADD PUSH2 0x21C1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x263A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2646 DUP6 DUP6 PUSH2 0x238B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261D DUP6 DUP3 DUP7 ADD PUSH2 0x2375 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x266F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x267B DUP9 DUP9 PUSH2 0x238B JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x268C DUP9 DUP3 DUP10 ADD PUSH2 0x2375 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x269D DUP9 DUP3 DUP10 ADD PUSH2 0x2436 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x26AE DUP9 DUP3 DUP10 ADD PUSH2 0x238B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x2551 DUP9 DUP3 DUP10 ADD PUSH2 0x238B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26E9 DUP4 DUP4 PUSH2 0x2718 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C53 DUP4 DUP4 PUSH2 0x28BA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26E9 DUP4 DUP4 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37B3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x3769 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x272C DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x2736 DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP PUSH2 0x2741 DUP4 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x276F JUMPI DUP2 MLOAD PUSH2 0x2759 DUP9 DUP3 PUSH2 0x26DD JUMP JUMPDEST SWAP8 POP PUSH2 0x2764 DUP4 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2745 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2785 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x278F DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x27A1 DUP6 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x27BE DUP6 DUP3 PUSH2 0x26F1 JUMP JUMPDEST SWAP5 POP PUSH2 0x27C9 DUP4 PUSH2 0x374A JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x27A5 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F3 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x27FD DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x280F DUP6 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x282C DUP6 DUP3 PUSH2 0x26F1 JUMP JUMPDEST SWAP5 POP PUSH2 0x2837 DUP4 PUSH2 0x374A JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2813 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2854 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x285E DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP PUSH2 0x2869 DUP4 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x276F JUMPI DUP2 MLOAD PUSH2 0x2881 DUP9 DUP3 PUSH2 0x26FD JUMP JUMPDEST SWAP8 POP PUSH2 0x288C DUP4 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x286D JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x3774 JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x2712 PUSH2 0x28B5 DUP3 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x48F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28C5 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x28CF DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP PUSH2 0x28DF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x37E7 JUMP JUMPDEST PUSH2 0x28E8 DUP2 PUSH2 0x3813 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x290F JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2953 JUMPI PUSH2 0x2992 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x2920 DUP2 DUP8 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x2992 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x2961 DUP2 DUP8 PUSH2 0x3760 JUMP JUMPDEST SWAP6 POP PUSH2 0x296C DUP6 PUSH2 0x3750 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x298B JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x296F JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37BA JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B9 PUSH1 0x44 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6564656400000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A3E PUSH1 0x45 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x7565756564000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AC3 PUSH1 0x2 DUP4 PUSH2 0x9B5 JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AFC PUSH1 0x29 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH32 0x6F706F73616C2069640000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B5B PUSH1 0x2D DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH32 0x616C726561647920766F74656400000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BBA PUSH1 0x59 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C3F PUSH1 0x28 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH32 0x20616374696F6E73000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C9E PUSH1 0x11 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x6164646974696F6E206F766572666C6F77000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD7 PUSH1 0x43 DUP4 PUSH2 0x9B5 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6374290000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D5C PUSH1 0x27 DUP4 PUSH2 0x9B5 JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH32 0x7570706F72742900000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DBB PUSH1 0x44 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6174636800000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E40 PUSH1 0x2F DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2070726F706F73657220 DUP2 MSTORE PUSH32 0x61626F7665207468726573686F6C640000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9F PUSH1 0x44 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x2065746100000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F24 PUSH1 0x2C DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH32 0x7669646520616374696F6E730000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F83 PUSH1 0x3F DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FE2 PUSH1 0x2F DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH32 0x76616C6964207369676E61747572650000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3041 PUSH1 0x58 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30C6 PUSH1 0x36 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH32 0x6E63656C2065786563757465642070726F706F73616C00000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3125 PUSH1 0x2A DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH32 0x20697320636C6F73656400000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3184 PUSH1 0x15 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x7375627472616374696F6E20756E646572666C6F770000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x31C1 DUP5 DUP3 PUSH2 0x2897 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x31D4 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2897 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x31E7 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x31FF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x379C JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37D0 JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37A2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3213 DUP3 PUSH2 0x2AB6 JUMP JUMPDEST SWAP2 POP PUSH2 0x321F DUP3 DUP6 PUSH2 0x28A9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x322F DUP3 DUP5 PUSH2 0x28A9 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x2CCA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x2D4F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x325D DUP3 DUP6 PUSH2 0x2709 JUMP JUMPDEST PUSH2 0x1C53 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x325D DUP3 DUP6 PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3286 DUP3 DUP8 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x3293 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x32A0 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x13AC PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x31F6 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x32BB DUP3 DUP9 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x32C8 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x28A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x32DA DUP2 DUP7 PUSH2 0x28BA JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x32EE DUP2 DUP6 PUSH2 0x28BA JUMP JUMPDEST SWAP1 POP PUSH2 0x32FD PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x28A0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3315 DUP3 DUP9 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x3322 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x28A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3334 DUP2 DUP7 PUSH2 0x28F2 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x32EE DUP2 DUP6 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3359 DUP2 DUP8 PUSH2 0x2721 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x336D DUP2 DUP7 PUSH2 0x2849 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3381 DUP2 DUP6 PUSH2 0x27E8 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x32FD DUP2 DUP5 PUSH2 0x277A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x33B1 DUP3 DUP8 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x33BE PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x33CB PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x13AC PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x33E6 DUP3 DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x33F3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x246A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2897 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x340E DUP3 DUP8 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x341B PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x31ED JUMP JUMPDEST PUSH2 0x3428 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x13AC PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x299A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x29A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1C53 DUP2 DUP5 PUSH2 0x28BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x29AC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2A31 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2AEF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2B4E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2BAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2C32 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2C91 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2DAE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2E33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2E92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2F17 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2F76 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2FD5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x3034 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x30B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x3118 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x3177 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x31B0 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x358F DUP3 DUP13 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x359C PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2709 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x35AE DUP2 DUP11 PUSH2 0x2721 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x35C2 DUP2 DUP10 PUSH2 0x2849 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x35D6 DUP2 DUP9 PUSH2 0x27E8 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x35EA DUP2 DUP8 PUSH2 0x277A JUMP JUMPDEST SWAP1 POP PUSH2 0x35F9 PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3606 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3619 DUP2 DUP5 PUSH2 0x28BA JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3637 DUP3 DUP13 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3644 PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x3651 PUSH1 0x40 DUP4 ADD DUP11 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x365E PUSH1 0x60 DUP4 ADD DUP10 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x366B PUSH1 0x80 DUP4 ADD DUP9 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3678 PUSH1 0xA0 DUP4 ADD DUP8 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3685 PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3692 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x36A0 PUSH2 0x100 DUP4 ADD DUP5 PUSH2 0x2897 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x325D DUP3 DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x36DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x36FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x371B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x3783 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x9B5 DUP2 PUSH2 0x383B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x3769 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x3779 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x37A2 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3802 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37EA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x31E7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x21BE JUMPI INVALID JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x3769 JUMP JUMPDEST DUP2 EQ PUSH2 0x21BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x3774 JUMP JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x379C JUMP JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x37A2 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xFC 0xD7 0x21 0xAB 0xE2 0xAA SWAP14 ORIGIN 0xA5 0x4B DUP12 PUSH14 0xB4C3188BC96B0BDC66FB78C5B967 MLOAD DUP9 PUSH6 0x49ABB26C6578 PUSH17 0x6572696D656E74616CF564736F6C634300 SDIV LT STOP BLOCKHASH ",
          "sourceMap": "60:12799:2:-;;;4811:142;8:9:-1;5:2;;;30:1;27;20:12;5:2;4811:142:2;;;;;;;;;;;;;;;;;;;;;4873:8;:39;;-1:-1:-1;;;;;4873:39:2;;;-1:-1:-1;;;;;;4873:39:2;;;;;;;;4922:24;;;;;;;;;;;60:12799;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:399;;;278:2;266:9;257:7;253:23;249:32;246:2;;;294:1;291;284:12;246:2;329:1;346:64;402:7;382:9;346:64;;;336:74;;308:108;447:2;465:64;521:7;512:6;501:9;497:22;465:64;;;455:74;;426:109;240:305;;;;;;552:91;;-1:-1;;;;;712:54;;614:24;695:76;778:117;847:24;865:5;847:24;;;840:5;837:35;827:2;;886:1;883;876:12;827:2;821:74;;;60:12799:2;;;;;;"
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "6080604052600436106101755760003560e01c80634634c61f116100cb578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103d0578063edc9af95146103fd578063fe0d94c11461041257610175565b8063da95691a1461037b578063ddf0b0091461039b578063deaaa7cc146103bb57610175565b8063b58131b0116100b0578063b58131b01461032f578063d33219b414610344578063da35c6641461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125cf565b610425565b6040516101af99989796959493929190613628565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af9190613395565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613451565b34801561020857600080fd5b5061021c610217366004612627565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244c565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125cf565b610512565b6040516101af9493929190613348565b3480156102a457600080fd5b506101cd6107ea565b3480156102b957600080fd5b506102cd6102c83660046125cf565b6107ef565b6040516101af9190613443565b3480156102e657600080fd5b5061021c6102f53660046125cf565b6109ba565b34801561030657600080fd5b5061021c610315366004612657565b610c8c565b34801561032657600080fd5b506101cd610e6e565b34801561033b57600080fd5b506101cd610e73565b34801561035057600080fd5b50610359610e82565b6040516101af9190613435565b34801561037257600080fd5b506101cd610e9e565b34801561038757600080fd5b506101cd610396366004612472565b610ea4565b3480156103a757600080fd5b5061021c6103b63660046125cf565b6113b5565b3480156103c757600080fd5b506101cd6116ac565b3480156103dc57600080fd5b506103f06103eb3660046125ed565b6116b8565b6040516101af9190613572565b34801561040957600080fd5b50610359611739565b61021c6104203660046125cf565b611755565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104d6338383611989565b5050565b60046020526000908152604090205481565b6040516104f890613239565b604051809103902081565b6a211654585005212800000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610576575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f357602002820191906000526020600020905b8154815260200190600101908083116105df575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001906001019061061b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b50505050508152602001906001019061070b565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108035750600082115b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613482565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108675760029150506109b5565b8060070154431161087c5760009150506109b5565b806008015443116108915760019150506109b5565b80600a015481600901541115806108b257506108ab610503565b8160090154105b156108c15760039150506109b5565b60028101546108d45760049150506109b5565b600b810154610100900460ff16156108f05760079150506109b5565b6002810154600054604080517fc1a287e2000000000000000000000000000000000000000000000000000000008152905161099f939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099a919081019061257c565b611c14565b42106109af5760069150506109b5565b60059150505b919050565b60006109c5826107ef565b905060078160078111156109d557fe5b1415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613542565b6000828152600360205260409020610a23610e73565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a59904390611c5a565b6040518363ffffffff1660e01b8152600401610a7692919061326a565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac691908101906126bf565b6bffffffffffffffffffffffff1610610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134e2565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c4f5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7a57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610baf57fe5b9060005260206000200154856005018581548110610bc957fe5b90600052602060002001866006018681548110610be257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c11959493929190613307565b600060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505060019092019150610b3b9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7f9190613395565b60405180910390a1505050565b6000604051610c9a90613239565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d01611c9c565b30604051602001610d1594939291906133a3565b6040516020818303038152906040528051906020012090506000604051610d3b90613244565b604051908190038120610d5491899089906020016133d8565b60405160208183030381529060405280519060200120905060008282604051602001610d81929190613208565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbe9493929190613400565b6020604051602081039080840390855afa158015610de0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613522565b610e63818a8a611989565b505050505050505050565b600a90565b6a084595161401484a00000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610eae610e73565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610edc904390611c5a565b6040518363ffffffff1660e01b8152600401610ef992919061324f565b60206040518083038186803b158015610f1157600080fd5b505afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4991908101906126bf565b6bffffffffffffffffffffffff1611610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613512565b84518651148015610fa0575083518651145b8015610fad575082518651145b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134d2565b855161101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613502565b611023610e6e565b8651111561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134b2565b33600090815260046020526040902054801561110e57600061107e826107ef565b9050600181600781111561108e57fe5b14156110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613532565b60008160078111156110d457fe5b141561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134a2565b505b600061111c4361099a6107ea565b9050600061112c8261099a61048b565b600280546001019055905061113f611e4c565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611249929190611ece565b5060808201518051611265916004840191602090910190611f58565b5060a08201518051611281916005840191602090910190611f9f565b5060c0820151805161129d916006840191602090910190611ff8565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161139d99989796959493929190613580565b60405180910390a15193505050505b95945050505050565b60046113c0826107ef565b60078111156113cb57fe5b14611402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613462565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148193429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096257600080fd5b905060005b60038301548110156116725761166a8360030182815481106114a457fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114d957fe5b90600052602060002001548560050184815481106114f357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b50505050508660060185815481106115b357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505086611ca0565b600101611486565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7f90859084906136ae565b6040516104f890613244565b6116c0612051565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6005611760826107ef565b600781111561176b57fe5b146117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613472565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194d5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061181f57fe5b906000526020600020015484600301848154811061183957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186e57fe5b906000526020600020015486600501868154811061188857fe5b906000526020600020018760060187815481106118a157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d0959493929190613307565b6000604051808303818588803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611944919081019061259a565b506001016117e0565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197d9190613395565b60405180910390a15050565b6001611994836107ef565b600781111561199f57fe5b146119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613552565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613492565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa2918a9160040161326a565b60206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af291908101906126bf565b90508315611b2057611b168360090154826bffffffffffffffffffffffff16611c14565b6009840155611b42565b611b3c83600a0154826bffffffffffffffffffffffff16611c14565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c04908890889088908690613278565b60405180910390a1505050505050565b600082820183811015611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134c2565b9392505050565b600082821115611c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613562565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdb90889088908890889088906020016132ad565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0d9190613395565b60206040518083038186803b158015611d2557600080fd5b505afa158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5d919081019061255e565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134f2565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df290889088908890889088906004016132ad565b602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e44919081019061257c565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f48579160200282015b82811115611f4857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eee565b50611f54929150612071565b5090565b828054828255906000526020600020908101928215611f93579160200282015b82811115611f93578251825591602001919060010190611f78565b50611f549291506120ad565b828054828255906000526020600020908101928215611fec579160200282015b82811115611fec5782518051611fdc9184916020909101906120c7565b5091602001919060010190611fbf565b50611f54929150612134565b828054828255906000526020600020908101928215612045579160200282015b8281111561204557825180516120359184916020909101906120c7565b5091602001919060010190612018565b50611f54929150612157565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f545780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612077565b61048f91905b80821115611f5457600081556001016120b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210857805160ff1916838001178555611f93565b82800160010185558215611f935791820182811115611f93578251825591602001919060010190611f78565b61048f91905b80821115611f5457600061214e828261217a565b5060010161213a565b61048f91905b80821115611f54576000612171828261217a565b5060010161215d565b50805460018160011615610100020316600290046000825580601f106121a057506121be565b601f0160209004906000526020600020908101906121be91906120ad565b50565b803561173381613845565b600082601f8301126121dd57600080fd5b81356121f06121eb826136e3565b6136bc565b9150818183526020840193506020810190508385602084028201111561221557600080fd5b60005b83811015612241578161222b88826121c1565b8452506020928301929190910190600101612218565b5050505092915050565b600082601f83011261225c57600080fd5b813561226a6121eb826136e3565b81815260209384019390925082018360005b83811015612241578135860161229288826123a1565b845250602092830192919091019060010161227c565b600082601f8301126122b957600080fd5b81356122c76121eb826136e3565b81815260209384019390925082018360005b8381101561224157813586016122ef88826123a1565b84525060209283019291909101906001016122d9565b600082601f83011261231657600080fd5b81356123246121eb826136e3565b9150818183526020840193506020810190508385602084028201111561234957600080fd5b60005b83811015612241578161235f888261238b565b845250602092830192919091019060010161234c565b803561173381613859565b805161173381613859565b803561173381613862565b805161173381613862565b600082601f8301126123b257600080fd5b81356123c06121eb82613704565b915080825260208301602083018583830111156123dc57600080fd5b6123e78382846137db565b50505092915050565b600082601f83011261240157600080fd5b815161240f6121eb82613704565b9150808252602083016020830185838301111561242b57600080fd5b6123e78382846137e7565b80356117338161386b565b805161173381613874565b60006020828403121561245e57600080fd5b600061246a84846121c1565b949350505050565b600080600080600060a0868803121561248a57600080fd5b853567ffffffffffffffff8111156124a157600080fd5b6124ad888289016121cc565b955050602086013567ffffffffffffffff8111156124ca57600080fd5b6124d688828901612305565b945050604086013567ffffffffffffffff8111156124f357600080fd5b6124ff888289016122a8565b935050606086013567ffffffffffffffff81111561251c57600080fd5b6125288882890161224b565b925050608086013567ffffffffffffffff81111561254557600080fd5b612551888289016123a1565b9150509295509295909350565b60006020828403121561257057600080fd5b600061246a8484612380565b60006020828403121561258e57600080fd5b600061246a8484612396565b6000602082840312156125ac57600080fd5b815167ffffffffffffffff8111156125c357600080fd5b61246a848285016123f0565b6000602082840312156125e157600080fd5b600061246a848461238b565b6000806040838503121561260057600080fd5b600061260c858561238b565b925050602061261d858286016121c1565b9150509250929050565b6000806040838503121561263a57600080fd5b6000612646858561238b565b925050602061261d85828601612375565b600080600080600060a0868803121561266f57600080fd5b600061267b888861238b565b955050602061268c88828901612375565b945050604061269d88828901612436565b93505060606126ae8882890161238b565b92505060806125518882890161238b565b6000602082840312156126d157600080fd5b600061246a8484612441565b60006126e98383612718565b505060200190565b6000611c5383836128ba565b60006126e983836128a0565b612712816137b3565b82525050565b61271281613769565b600061272c8261375c565b6127368185613760565b93506127418361374a565b8060005b8381101561276f57815161275988826126dd565b97506127648361374a565b925050600101612745565b509495945050505050565b60006127858261375c565b61278f8185613760565b9350836020820285016127a18561374a565b8060005b858110156127db57848403895281516127be85826126f1565b94506127c98361374a565b60209a909a01999250506001016127a5565b5091979650505050505050565b60006127f38261375c565b6127fd8185613760565b93508360208202850161280f8561374a565b8060005b858110156127db578484038952815161282c85826126f1565b94506128378361374a565b60209a909a0199925050600101612813565b60006128548261375c565b61285e8185613760565b93506128698361374a565b8060005b8381101561276f57815161288188826126fd565b975061288c8361374a565b92505060010161286d565b61271281613774565b6127128161048f565b6127126128b58261048f565b61048f565b60006128c58261375c565b6128cf8185613760565b93506128df8185602086016137e7565b6128e881613813565b9093019392505050565b60008154600181166000811461290f576001811461295357612992565b607f60028304166129208187613760565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612992565b600282046129618187613760565b955061296c85613750565b60005b8281101561298b5781548882015260019091019060200161296f565b8701945050505b505092915050565b612712816137ba565b612712816137c5565b60006129b9604483613760565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a3e604583613760565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ac36002836109b5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612afc602983613760565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612b5b602d83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612bba605983613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612c3f602883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612c9e601183613760565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612cd76043836109b5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612d5c6027836109b5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612dbb604483613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e40602f83613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e9f604483613760565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f24602c83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612f83603f83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612fe2602f83613760565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000613041605883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130c6603683613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613125602a83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613184601583613760565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131c18482612897565b5060208201516131d46020850182612897565b5060408201516131e760408501826131ff565b50505050565b6127128161379c565b612712816137d0565b612712816137a2565b600061321382612ab6565b915061321f82856128a9565b60208201915061322f82846128a9565b5060200192915050565b600061173382612cca565b600061173382612d4f565b6040810161325d8285612709565b611c5360208301846128a0565b6040810161325d8285612718565b608081016132868287612718565b61329360208301866128a0565b6132a06040830185612897565b6113ac60608301846131f6565b60a081016132bb8288612718565b6132c860208301876128a0565b81810360408301526132da81866128ba565b905081810360608301526132ee81856128ba565b90506132fd60808301846128a0565b9695505050505050565b60a081016133158288612718565b61332260208301876128a0565b818103604083015261333481866128f2565b905081810360608301526132ee81856128f2565b608080825281016133598187612721565b9050818103602083015261336d8186612849565b9050818103604083015261338181856127e8565b905081810360608301526132fd818461277a565b6020810161173382846128a0565b608081016133b182876128a0565b6133be60208301866128a0565b6133cb60408301856128a0565b6113ac6060830184612718565b606081016133e682866128a0565b6133f360208301856128a0565b61246a6040830184612897565b6080810161340e82876128a0565b61341b60208301866131ed565b61342860408301856128a0565b6113ac60608301846128a0565b60208101611733828461299a565b6020810161173382846129a3565b60208082528101611c5381846128ba565b60208082528101611733816129ac565b6020808252810161173381612a31565b6020808252810161173381612aef565b6020808252810161173381612b4e565b6020808252810161173381612bad565b6020808252810161173381612c32565b6020808252810161173381612c91565b6020808252810161173381612dae565b6020808252810161173381612e33565b6020808252810161173381612e92565b6020808252810161173381612f17565b6020808252810161173381612f76565b6020808252810161173381612fd5565b6020808252810161173381613034565b60208082528101611733816130b9565b6020808252810161173381613118565b6020808252810161173381613177565b6060810161173382846131b0565b610120810161358f828c6128a0565b61359c602083018b612709565b81810360408301526135ae818a612721565b905081810360608301526135c28189612849565b905081810360808301526135d681886127e8565b905081810360a08301526135ea818761277a565b90506135f960c08301866128a0565b61360660e08301856128a0565b81810361010083015261361981846128ba565b9b9a5050505050505050505050565b6101208101613637828c6128a0565b613644602083018b612718565b613651604083018a6128a0565b61365e60608301896128a0565b61366b60808301886128a0565b61367860a08301876128a0565b61368560c08301866128a0565b61369260e0830185612897565b6136a0610100830184612897565b9a9950505050505050505050565b6040810161325d82856128a0565b60405181810167ffffffffffffffff811182821017156136db57600080fd5b604052919050565b600067ffffffffffffffff8211156136fa57600080fd5b5060209081020190565b600067ffffffffffffffff82111561371b57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061173382613783565b151590565b806109b58161383b565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611733825b600061173382613769565b600061173382613779565b6000611733826137a2565b82818337506000910152565b60005b838110156138025781810151838201526020016137ea565b838111156131e75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121be57fe5b61384e81613769565b81146121be57600080fd5b61384e81613774565b61384e8161048f565b61384e8161379c565b61384e816137a256fea365627a7a72315820fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb26c6578706572696d656e74616cf564736f6c63430005100040",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x175 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4634C61F GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xDA95691A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE23A9A52 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0xEDC9AF95 EQ PUSH2 0x3FD JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x412 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0xDA95691A EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x3BB JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0xB58131B0 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x366 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x4634C61F EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x31A JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 GT PUSH2 0x12D JUMPI DUP1 PUSH4 0x3932ABB1 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x2DA JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x328DD982 EQ PUSH2 0x268 JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x15E JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x21E JUMPI PUSH2 0x175 JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19A PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3628 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x48B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1EF PUSH2 0x492 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3451 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x4CB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x244C JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x4EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x503 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x512 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3348 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x7EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x2C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3443 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x2F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x9BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x315 CALLDATASIZE PUSH1 0x4 PUSH2 0x2657 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE73 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x359 PUSH2 0xE82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3435 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0xE9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x396 CALLDATASIZE PUSH1 0x4 PUSH2 0x2472 JUMP JUMPDEST PUSH2 0xEA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21C PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x13B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x16AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F0 PUSH2 0x3EB CALLDATASIZE PUSH1 0x4 PUSH2 0x25ED JUMP JUMPDEST PUSH2 0x16B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AF SWAP2 SWAP1 PUSH2 0x3572 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x359 PUSH2 0x1739 JUMP JUMPDEST PUSH2 0x21C PUSH2 0x420 CALLDATASIZE PUSH1 0x4 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x1755 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x8 DUP6 ADD SLOAD PUSH1 0x9 DUP7 ADD SLOAD PUSH1 0xA DUP8 ADD SLOAD PUSH1 0xB SWAP1 SWAP8 ADD SLOAD SWAP6 SWAP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP6 AND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xFF DUP1 DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV AND DUP10 JUMP JUMPDEST PUSH2 0x9D80 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020476F7665726E6F7220416C70686100000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x4D6 CALLER DUP4 DUP4 PUSH2 0x1989 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F8 SWAP1 PUSH2 0x3239 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH11 0x2116545850052128000000 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x3 ADD DUP2 PUSH1 0x4 ADD DUP3 PUSH1 0x5 ADD DUP4 PUSH1 0x6 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x576 JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x5DF JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6A5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D0 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 0x6B3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x61B JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7C0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x795 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7C0 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 0x7A3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x70B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x803 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3482 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0xB DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x867 JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST DUP1 PUSH1 0x7 ADD SLOAD NUMBER GT PUSH2 0x87C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST DUP1 PUSH1 0x8 ADD SLOAD NUMBER GT PUSH2 0x891 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST DUP1 PUSH1 0xA ADD SLOAD DUP2 PUSH1 0x9 ADD SLOAD GT ISZERO DUP1 PUSH2 0x8B2 JUMPI POP PUSH2 0x8AB PUSH2 0x503 JUMP JUMPDEST DUP2 PUSH1 0x9 ADD SLOAD LT JUMPDEST ISZERO PUSH2 0x8C1 JUMPI PUSH1 0x3 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0x8D4 JUMPI PUSH1 0x4 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0xB DUP2 ADD SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x7 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC1A287E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH2 0x99F SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x976 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x99A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x257C JUMP JUMPDEST PUSH2 0x1C14 JUMP JUMPDEST TIMESTAMP LT PUSH2 0x9AF JUMPI PUSH1 0x6 SWAP2 POP POP PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x5 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C5 DUP3 PUSH2 0x7EF JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x9D5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xA0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3542 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xA23 PUSH2 0xE73 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP4 DUP3 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP3 PUSH4 0x782D6FE1 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH2 0xA59 SWAP1 NUMBER SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA76 SWAP3 SWAP2 SWAP1 PUSH2 0x326A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xAC6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BF JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xB0B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xC4F JUMPI PUSH1 0x0 SLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xB7A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xBAF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xBC9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xBE2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC11 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xB3B SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xC7F SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xC9A SWAP1 PUSH2 0x3239 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x16 DUP3 MSTORE PUSH32 0x556E697377617020476F7665726E6F7220416C70686100000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xA5E0CFCFBED4E8AF9BBB6C62A3DCBD52DEDB58A723EE69F4D714B41681F2C447 PUSH2 0xD01 PUSH2 0x1C9C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD15 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x33A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xD3B SWAP1 PUSH2 0x3244 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xD54 SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x33D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD81 SWAP3 SWAP2 SWAP1 PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xDBE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3400 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3522 JUMP JUMPDEST PUSH2 0xE63 DUP2 DUP11 DUP11 PUSH2 0x1989 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SWAP1 JUMP JUMPDEST PUSH11 0x84595161401484A000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAE PUSH2 0xE73 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x782D6FE1 SWAP1 CALLER SWAP1 PUSH2 0xEDC SWAP1 NUMBER SWAP1 PUSH2 0x1C5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEF9 SWAP3 SWAP2 SWAP1 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF25 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF49 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BF JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0xF8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3512 JUMP JUMPDEST DUP5 MLOAD DUP7 MLOAD EQ DUP1 ISZERO PUSH2 0xFA0 JUMPI POP DUP4 MLOAD DUP7 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0xFAD JUMPI POP DUP3 MLOAD DUP7 MLOAD EQ JUMPDEST PUSH2 0xFE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34D2 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x101B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3502 JUMP JUMPDEST PUSH2 0x1023 PUSH2 0xE6E JUMP JUMPDEST DUP7 MLOAD GT ISZERO PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34B2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x110E JUMPI PUSH1 0x0 PUSH2 0x107E DUP3 PUSH2 0x7EF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x108E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x10C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3532 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x10D4 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x110C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34A2 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x111C NUMBER PUSH2 0x99A PUSH2 0x7EA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x112C DUP3 PUSH2 0x99A PUSH2 0x48B JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x113F PUSH2 0x1E4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x3 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1249 SWAP3 SWAP2 SWAP1 PUSH2 0x1ECE JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1265 SWAP2 PUSH1 0x4 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F58 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1281 SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F9F JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x129D SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1FF8 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x7 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x8 ADD SSTORE PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x9 ADD SSTORE PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0xA ADD SSTORE PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0xB ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x4 PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP13 DUP13 DUP13 DUP13 DUP10 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0x139D SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3580 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x13C0 DUP3 PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x13CB JUMPI INVALID JUMPDEST EQ PUSH2 0x1402 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3462 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD DUP3 MLOAD PUSH32 0x6A42B8F800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP5 SWAP4 PUSH2 0x1481 SWAP4 TIMESTAMP SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 PUSH4 0x6A42B8F8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1672 JUMPI PUSH2 0x166A DUP4 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14A4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x14D9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x5 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x14F3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x159F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1574 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x159F 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 0x1582 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x15B3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x165F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1634 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x165F 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 0x1642 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x1CA0 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1486 JUMP JUMPDEST POP PUSH1 0x2 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 SWAP1 PUSH2 0xC7F SWAP1 DUP6 SWAP1 DUP5 SWAP1 PUSH2 0x36AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F8 SWAP1 PUSH2 0x3244 JUMP JUMPDEST PUSH2 0x16C0 PUSH2 0x2051 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE PUSH1 0xC ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1760 DUP3 PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x176B JUMPI INVALID JUMPDEST EQ PUSH2 0x17A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0xB DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x181F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x3 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1839 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x4 DUP7 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x186E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x5 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1888 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x6 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x18A1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD SLOAD PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18D0 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1944 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x259A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x17E0 JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x197D SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1994 DUP4 PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x199F JUMPI INVALID JUMPDEST EQ PUSH2 0x19D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3552 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE PUSH1 0xC DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1A46 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3492 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x7 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x782D6FE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x782D6FE1 SWAP2 PUSH2 0x1AA2 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x326A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1ACE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1AF2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x26BF JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1B20 JUMPI PUSH2 0x1B16 DUP4 PUSH1 0x9 ADD SLOAD DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x9 DUP5 ADD SSTORE PUSH2 0x1B42 JUMP JUMPDEST PUSH2 0x1B3C DUP4 PUSH1 0xA ADD SLOAD DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0xA DUP5 ADD SSTORE JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP1 SWAP2 AND OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFF AND PUSH3 0x10000 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x1C04 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x3278 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1C53 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34C2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1C96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x3562 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x1CDB SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x32AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D0D SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1D5D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x255E JUMP JUMPDEST ISZERO PUSH2 0x1D94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x839 SWAP1 PUSH2 0x34F2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3A66F90100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x1DF2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x32AD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1E44 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x257C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1A0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1F48 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1F48 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1EEE JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x2071 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1F93 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1F93 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1F78 JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x20AD JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1FEC JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1FEC JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x1FDC SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x20C7 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1FBF JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x2134 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2045 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2045 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2035 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x20C7 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2018 JUMP JUMPDEST POP PUSH2 0x1F54 SWAP3 SWAP2 POP PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x20B3 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 0x2108 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1F93 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1F93 JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x1F93 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1F78 JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 PUSH2 0x214E DUP3 DUP3 PUSH2 0x217A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x213A JUMP JUMPDEST PUSH2 0x48F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 PUSH2 0x2171 DUP3 DUP3 PUSH2 0x217A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x215D JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x21A0 JUMPI POP PUSH2 0x21BE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x21BE SWAP2 SWAP1 PUSH2 0x20AD JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x3845 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x21DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21F0 PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST PUSH2 0x36BC JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 PUSH2 0x222B DUP9 DUP3 PUSH2 0x21C1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2218 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x225C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x226A PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2292 DUP9 DUP3 PUSH2 0x23A1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x227C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x22C7 PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x22EF DUP9 DUP3 PUSH2 0x23A1 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x22D9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2324 PUSH2 0x21EB DUP3 PUSH2 0x36E3 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP2 PUSH2 0x235F DUP9 DUP3 PUSH2 0x238B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x234C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x3859 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1733 DUP2 PUSH2 0x3859 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x3862 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1733 DUP2 PUSH2 0x3862 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23C0 PUSH2 0x21EB DUP3 PUSH2 0x3704 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E7 DUP4 DUP3 DUP5 PUSH2 0x37DB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x240F PUSH2 0x21EB DUP3 PUSH2 0x3704 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x242B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E7 DUP4 DUP3 DUP5 PUSH2 0x37E7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1733 DUP2 PUSH2 0x386B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1733 DUP2 PUSH2 0x3874 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x245E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x21C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x248A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24AD DUP9 DUP3 DUP10 ADD PUSH2 0x21CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24D6 DUP9 DUP3 DUP10 ADD PUSH2 0x2305 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x24F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24FF DUP9 DUP3 DUP10 ADD PUSH2 0x22A8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x251C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2528 DUP9 DUP3 DUP10 ADD PUSH2 0x224B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2551 DUP9 DUP3 DUP10 ADD PUSH2 0x23A1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x2380 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x258E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x2396 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x25C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x246A DUP5 DUP3 DUP6 ADD PUSH2 0x23F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x238B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x260C DUP6 DUP6 PUSH2 0x238B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261D DUP6 DUP3 DUP7 ADD PUSH2 0x21C1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x263A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2646 DUP6 DUP6 PUSH2 0x238B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261D DUP6 DUP3 DUP7 ADD PUSH2 0x2375 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x266F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x267B DUP9 DUP9 PUSH2 0x238B JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x268C DUP9 DUP3 DUP10 ADD PUSH2 0x2375 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x269D DUP9 DUP3 DUP10 ADD PUSH2 0x2436 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x26AE DUP9 DUP3 DUP10 ADD PUSH2 0x238B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x2551 DUP9 DUP3 DUP10 ADD PUSH2 0x238B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x246A DUP5 DUP5 PUSH2 0x2441 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26E9 DUP4 DUP4 PUSH2 0x2718 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C53 DUP4 DUP4 PUSH2 0x28BA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26E9 DUP4 DUP4 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37B3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x3769 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x272C DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x2736 DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP PUSH2 0x2741 DUP4 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x276F JUMPI DUP2 MLOAD PUSH2 0x2759 DUP9 DUP3 PUSH2 0x26DD JUMP JUMPDEST SWAP8 POP PUSH2 0x2764 DUP4 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2745 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2785 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x278F DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x27A1 DUP6 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x27BE DUP6 DUP3 PUSH2 0x26F1 JUMP JUMPDEST SWAP5 POP PUSH2 0x27C9 DUP4 PUSH2 0x374A JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x27A5 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F3 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x27FD DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x280F DUP6 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x282C DUP6 DUP3 PUSH2 0x26F1 JUMP JUMPDEST SWAP5 POP PUSH2 0x2837 DUP4 PUSH2 0x374A JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2813 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2854 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x285E DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP PUSH2 0x2869 DUP4 PUSH2 0x374A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x276F JUMPI DUP2 MLOAD PUSH2 0x2881 DUP9 DUP3 PUSH2 0x26FD JUMP JUMPDEST SWAP8 POP PUSH2 0x288C DUP4 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x286D JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x3774 JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x2712 PUSH2 0x28B5 DUP3 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x48F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28C5 DUP3 PUSH2 0x375C JUMP JUMPDEST PUSH2 0x28CF DUP2 DUP6 PUSH2 0x3760 JUMP JUMPDEST SWAP4 POP PUSH2 0x28DF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x37E7 JUMP JUMPDEST PUSH2 0x28E8 DUP2 PUSH2 0x3813 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x290F JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2953 JUMPI PUSH2 0x2992 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x2920 DUP2 DUP8 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x2992 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x2961 DUP2 DUP8 PUSH2 0x3760 JUMP JUMPDEST SWAP6 POP PUSH2 0x296C DUP6 PUSH2 0x3750 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x298B JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x296F JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37BA JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B9 PUSH1 0x44 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6564656400000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A3E PUSH1 0x45 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x7565756564000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AC3 PUSH1 0x2 DUP4 PUSH2 0x9B5 JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AFC PUSH1 0x29 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH32 0x6F706F73616C2069640000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B5B PUSH1 0x2D DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH32 0x616C726561647920766F74656400000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BBA PUSH1 0x59 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C3F PUSH1 0x28 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH32 0x20616374696F6E73000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C9E PUSH1 0x11 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x6164646974696F6E206F766572666C6F77000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD7 PUSH1 0x43 DUP4 PUSH2 0x9B5 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6374290000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D5C PUSH1 0x27 DUP4 PUSH2 0x9B5 JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH32 0x7570706F72742900000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DBB PUSH1 0x44 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6174636800000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E40 PUSH1 0x2F DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2070726F706F73657220 DUP2 MSTORE PUSH32 0x61626F7665207468726573686F6C640000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9F PUSH1 0x44 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x2065746100000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F24 PUSH1 0x2C DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH32 0x7669646520616374696F6E730000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F83 PUSH1 0x3F DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FE2 PUSH1 0x2F DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH32 0x76616C6964207369676E61747572650000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3041 PUSH1 0x58 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30C6 PUSH1 0x36 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH32 0x6E63656C2065786563757465642070726F706F73616C00000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3125 PUSH1 0x2A DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH32 0x20697320636C6F73656400000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3184 PUSH1 0x15 DUP4 PUSH2 0x3760 JUMP JUMPDEST PUSH32 0x7375627472616374696F6E20756E646572666C6F770000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x31C1 DUP5 DUP3 PUSH2 0x2897 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x31D4 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2897 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x31E7 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x31FF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x379C JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37D0 JUMP JUMPDEST PUSH2 0x2712 DUP2 PUSH2 0x37A2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3213 DUP3 PUSH2 0x2AB6 JUMP JUMPDEST SWAP2 POP PUSH2 0x321F DUP3 DUP6 PUSH2 0x28A9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x322F DUP3 DUP5 PUSH2 0x28A9 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x2CCA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x2D4F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x325D DUP3 DUP6 PUSH2 0x2709 JUMP JUMPDEST PUSH2 0x1C53 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x325D DUP3 DUP6 PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3286 DUP3 DUP8 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x3293 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x32A0 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x13AC PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x31F6 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x32BB DUP3 DUP9 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x32C8 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x28A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x32DA DUP2 DUP7 PUSH2 0x28BA JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x32EE DUP2 DUP6 PUSH2 0x28BA JUMP JUMPDEST SWAP1 POP PUSH2 0x32FD PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x28A0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3315 DUP3 DUP9 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x3322 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x28A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3334 DUP2 DUP7 PUSH2 0x28F2 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x32EE DUP2 DUP6 PUSH2 0x28F2 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3359 DUP2 DUP8 PUSH2 0x2721 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x336D DUP2 DUP7 PUSH2 0x2849 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3381 DUP2 DUP6 PUSH2 0x27E8 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x32FD DUP2 DUP5 PUSH2 0x277A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x33B1 DUP3 DUP8 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x33BE PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x33CB PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x13AC PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x33E6 DUP3 DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x33F3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x246A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2897 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x340E DUP3 DUP8 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x341B PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x31ED JUMP JUMPDEST PUSH2 0x3428 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x13AC PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x299A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x29A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1C53 DUP2 DUP5 PUSH2 0x28BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x29AC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2A31 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2AEF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2B4E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2BAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2C32 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2C91 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2DAE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2E33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2E92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2F17 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2F76 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x2FD5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x3034 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x30B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x3118 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1733 DUP2 PUSH2 0x3177 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1733 DUP3 DUP5 PUSH2 0x31B0 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x358F DUP3 DUP13 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x359C PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2709 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x35AE DUP2 DUP11 PUSH2 0x2721 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x35C2 DUP2 DUP10 PUSH2 0x2849 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x35D6 DUP2 DUP9 PUSH2 0x27E8 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x35EA DUP2 DUP8 PUSH2 0x277A JUMP JUMPDEST SWAP1 POP PUSH2 0x35F9 PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3606 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x28A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3619 DUP2 DUP5 PUSH2 0x28BA JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3637 DUP3 DUP13 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3644 PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x3651 PUSH1 0x40 DUP4 ADD DUP11 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x365E PUSH1 0x60 DUP4 ADD DUP10 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x366B PUSH1 0x80 DUP4 ADD DUP9 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3678 PUSH1 0xA0 DUP4 ADD DUP8 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3685 PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x28A0 JUMP JUMPDEST PUSH2 0x3692 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x36A0 PUSH2 0x100 DUP4 ADD DUP5 PUSH2 0x2897 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x325D DUP3 DUP6 PUSH2 0x28A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x36DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x36FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x371B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x3783 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x9B5 DUP2 PUSH2 0x383B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x3769 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x3779 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1733 DUP3 PUSH2 0x37A2 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3802 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37EA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x31E7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x21BE JUMPI INVALID JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x3769 JUMP JUMPDEST DUP2 EQ PUSH2 0x21BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x3774 JUMP JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x379C JUMP JUMPDEST PUSH2 0x384E DUP2 PUSH2 0x37A2 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xFC 0xD7 0x21 0xAB 0xE2 0xAA SWAP14 ORIGIN 0xA5 0x4B DUP12 PUSH14 0xB4C3188BC96B0BDC66FB78C5B967 MLOAD DUP9 PUSH6 0x49ABB26C6578 PUSH17 0x6572696D656E74616CF564736F6C634300 SDIV LT STOP BLOCKHASH ",
          "sourceMap": "60:12799:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3527:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3527:43:2;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1008:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1008:69:2;;;:::i;:::-;;;;;;;;131:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;131:54:2;;;:::i;:::-;;;;;;;;10814:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10814:122:2;;;;;;;;:::i;:::-;;3631:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3631:50:2;;;;;;;;:::i;3751:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3751:122:2;;;:::i;324:75::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;324:75:2;;;:::i;9337:284::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9337:284:2;;;;;;;;:::i;:::-;;;;;;;;;;;864:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;864:63:2;;;:::i;9783:1025::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9783:1025:2;;;;;;;;:::i;:::-;;;;;;;;8622:709;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8622:709:2;;;;;;;;:::i;10942:618::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10942:618:2;;;;;;;;:::i;686:74::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;686:74:2;;;:::i;505:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;505:81:2;;;:::i;1187:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1187:33:2;;;:::i;:::-;;;;;;;;1363:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:25:2;;;:::i;4959:2133::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4959:2133:2;;;;;;;;:::i;7098:568::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7098:568:2;;;;;;;;:::i;3960:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3960:94:2;;;:::i;9627:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9627:150:2;;;;;;;;:::i;:::-;;;;;;;;1287:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1287:23:2;;;:::i;8051:565::-;;;;;;;;;:::i;3527:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1008:69::-;1068:6;1008:69;;:::o;131:54::-;;;;;;;;;;;;;;;;;;;:::o;10814:122::-;10887:42;10897:10;10909;10921:7;10887:9;:42::i;:::-;10814:122;;:::o;3631:50::-;;;;;;;;;;;;;:::o;3751:122::-;3793:80;;;;;;;;;;;;;;3751:122;:::o;324:75::-;383:13;324:75;:::o;9337:284::-;9395:24;9421:20;9443:26;9471:24;9507:18;9528:9;:21;9538:10;9528:21;;;;;;;;;;;9507:42;;9567:1;:9;;9578:1;:8;;9588:1;:12;;9602:1;:11;;9559:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9337:284;;;;;:::o;864:63::-;923:1;864:63;:::o;9783:1025::-;9836:13;9886:10;9869:13;;:27;;:45;;;;;9913:1;9900:10;:14;9869:45;9861:99;;;;;;;;;;;;;;;;;;;;;;9970:25;9998:21;;;:9;:21;;;;;10033:17;;;;;;10029:773;;;10073:22;10066:29;;;;;10029:773;10132:8;:19;;;10116:12;:35;10112:690;;10174:21;10167:28;;;;;10112:690;10232:8;:17;;;10216:12;:33;10212:590;;10272:20;10265:27;;;;;10212:590;10334:8;:21;;;10313:8;:17;;;:42;;:79;;;;10379:13;:11;:13::i;:::-;10359:8;:17;;;:33;10313:79;10309:493;;;10415:22;10408:29;;;;;10309:493;10458:12;;;;10454:348;;10498:23;10491:30;;;;;10454:348;10542:17;;;;;;;;;10538:264;;;10582:22;10575:29;;;;;10538:264;10651:12;;;;10665:8;;:23;;;;;;;;10644:45;;10651:12;10665:8;;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;10665:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10665:23:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10665:23:2;;;;;;;;;10644:6;:45::i;:::-;10625:15;:64;10621:181;;10712:21;10705:28;;;;;10621:181;10771:20;10764:27;;;9783:1025;;;;:::o;8622:709::-;8672:19;8694:17;8700:10;8694:5;:17::i;:::-;8672:39;-1:-1:-1;8738:22:2;8729:5;:31;;;;;;;;;;8721:98;;;;;;;;;;;;;;8830:25;8858:21;;;:9;:21;;;;;8961:19;:17;:19::i;:::-;8897:3;;;8915:17;;;;8897:3;;;;;:17;;8915;;;;8934:23;;8941:12;;8934:6;:23::i;:::-;8897:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8897:61:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8897:61:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8897:61:2;;;;;;;;;:83;;;8889:143;;;;;;;;;;;;;;9043:17;;;:24;;;;9063:4;9043:24;;;:17;9077:204;9098:16;;;:23;9094:27;;9077:204;;;9142:8;;9169:16;;;:19;;9142:8;;;;;:26;;9169:16;9186:1;;9169:19;;;;;;;;;;;;;;;;9190:15;;;:18;;9169:19;;;;;9206:1;;9190:18;;;;;;;;;;;;;;9210:8;:19;;9230:1;9210:22;;;;;;;;;;;;;;;9234:8;:18;;9253:1;9234:21;;;;;;;;;;;;;;;9257:8;:12;;;9142:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9142:128:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9123:3:2;;;;;-1:-1:-1;9077:204:2;;-1:-1:-1;9077:204:2;;;9296:28;9313:10;9296:28;;;;;;;;;;;;;;;8622:709;;;:::o;10942:618::-;11044:23;3793:80;;;;;;;;;;;;;;;;11124:4;;;;;;;;;;;;;;;;;;11108:22;11132:12;:10;:12::i;:::-;11154:4;11080:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11080:80:2;;;11070:91;;;;;;11044:117;;11171:18;4002:52;;;;;;;;;;;;;;;11202:48;;11230:10;;11242:7;;11202:48;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11202:48:2;;;11192:59;;;;;;11171:80;;11261:14;11317:15;11334:10;11288:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11288:57:2;;;11278:68;;;;;;11261:85;;11356:17;11376:26;11386:6;11394:1;11397;11400;11376:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11376:26:2;;;;;;-1:-1:-1;;11420:23:2;;;11412:83;;;;;;;;;;;;;;11512:41;11522:9;11533:10;11545:7;11512:9;:41::i;:::-;11505:48;;;;10942:618;;;;;:::o;686:74::-;755:2;686:74;:::o;505:81::-;570:13;505:81;:::o;1187:33::-;;;;;;:::o;1363:25::-;;;;:::o;4959:2133::-;5121:4;5202:19;:17;:19::i;:::-;5145:3;;;;;;:17;;5163:10;;5175:23;;5182:12;;5175:6;:23::i;:::-;5145:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5145:54:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5145:54:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5145:54:2;;;;;;;;;:76;;;5137:152;;;;;;;;;;;;;;5325:6;:13;5307:7;:14;:31;:70;;;;;5360:10;:17;5342:7;:14;:35;5307:70;:108;;;;;5399:9;:16;5381:7;:14;:34;5307:108;5299:189;;;;;;;;;;;;;;5506:14;;5498:76;;;;;;;;;;;;;;5610:23;:21;:23::i;:::-;5592:7;:14;:41;;5584:94;;;;;;;;;;;;;;5731:10;5689:21;5713:29;;;:17;:29;;;;;;5756:21;;5752:450;;5791:42;5836:23;5842:16;5836:5;:23::i;:::-;5791:68;-1:-1:-1;5911:20:2;5879:28;:52;;;;;;;;;;5871:153;;;;;;;;;;;;;;6076:21;6044:28;:53;;;;;;;;;;6036:155;;;;;;;;;;;;;;5752:450;;6212:15;6230:35;6237:12;6251:13;:11;:13::i;6230:35::-;6212:53;;6275:13;6291:34;6298:10;6310:14;:12;:14::i;6291:34::-;6336:13;:15;;;;;;6275:50;-1:-1:-1;6361:27:2;;:::i;:::-;6391:413;;;;;;;;6418:13;;6391:413;;;;6455:10;6391:413;;;;;;6484:1;6391:413;;;;6508:7;6391:413;;;;6537:6;6391:413;;;;6569:10;6391:413;;;;6604:9;6391:413;;;;6639:10;6391:413;;;;6673:8;6391:413;;;;6705:1;6391:413;;;;6734:1;6391:413;;;;6759:5;6391:413;;;;;;6788:5;6391:413;;;;;6361:443;;6843:11;6815:9;:25;6825:11;:14;;;6815:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6815:39:2;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6815:39:2;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6815:39:2;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6906:11;:14;;;6864:17;:39;6882:11;:20;;;6864:39;;;;;;;;;;;;;;;:56;;;;6936:118;6952:11;:14;;;6968:10;6980:7;6989:6;6997:10;7009:9;7020:10;7032:8;7042:11;6936:118;;;;;;;;;;;;;;;;;;;;;;;7071:14;;-1:-1:-1;;;;4959:2133:2;;;;;;;;:::o;7098:568::-;7176:23;7155:17;7161:10;7155:5;:17::i;:::-;:44;;;;;;;;;7147:125;;;;;;;;;;;;;;7282:25;7310:21;;;:9;:21;;;;;;;;7376:8;;:16;;;;;;;7310:21;;7282:25;7352:41;;7359:15;;7376:8;;;;;:14;;:16;;;;;7310:21;;7376:16;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;7352:41:2;7341:52;-1:-1:-1;7408:6:2;7403:183;7424:16;;;:23;7420:27;;7403:183;;;7468:107;7483:8;:16;;7500:1;7483:19;;;;;;;;;;;;;;;;;;7504:15;;;:18;;7483:19;;;;;7520:1;;7504:18;;;;;;;;;;;;;;7524:8;:19;;7544:1;7524:22;;;;;;;;;;;;;;;;;;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7524:22;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7548:8;:18;;7567:1;7548:21;;;;;;;;;;;;;;;;;;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7548:21;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7571:3;7468:14;:107::i;:::-;7449:3;;7403:183;;;-1:-1:-1;7595:12:2;;;:18;;;7628:31;;;;;;7643:10;;7610:3;;7628:31;;3960:94;4002:52;;;;;;9627:150;9700:14;;:::i;:::-;-1:-1:-1;9733:21:2;;;;:9;:21;;;;;;;;:37;;;;;:30;;:37;;;;;;9726:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9627:150;;;;;:::o;1287:23::-;;;;;;:::o;8051:565::-;8139:20;8118:17;8124:10;8118:5;:17::i;:::-;:41;;;;;;;;;8110:123;;;;;;;;;;;;;;8243:25;8271:21;;;:9;:21;;;;;8302:17;;;:24;;;;;;;;8271:21;8336:231;8357:16;;;:23;8353:27;;8336:231;;;8401:8;;8435:15;;;:18;;8401:8;;;;;:27;;8435:15;8451:1;;8435:18;;;;;;;;;;;;;;8455:8;:16;;8472:1;8455:19;;;;;;;;;;;;;;;;;;8476:15;;;:18;;8455:19;;;;;8492:1;;8476:18;;;;;;;;;;;;;;8496:8;:19;;8516:1;8496:22;;;;;;;;;;;;;;;8520:8;:18;;8539:1;8520:21;;;;;;;;;;;;;;;8543:8;:12;;;8401:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8401:155:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8401:155:2;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8401:155:2;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;8401:155:2;;;;;;;;;-1:-1:-1;8382:3:2;;8336:231;;;;8581:28;8598:10;8581:28;;;;;;;;;;;;;;;8051:565;;:::o;11566:819::-;11679:20;11658:17;11664:10;11658:5;:17::i;:::-;:41;;;;;;;;;11650:96;;;;;;;;;;;;;;11756:25;11784:21;;;:9;:21;;;;;;;;11841:24;;;;;:17;;;:24;;;;;;11883:16;;;;:25;11875:83;;;;;;;;;;;;;;11983:3;;12008:19;;;;11983:45;;;;;11968:12;;11983:3;;;:17;;:45;;12001:5;;11983:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11983:45:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11983:45:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11983:45:2;;;;;;;;;11968:60;;12043:7;12039:181;;;12086:32;12093:8;:17;;;12112:5;12086:32;;:6;:32::i;:::-;12066:17;;;:52;12039:181;;;12173:36;12180:8;:21;;;12203:5;12173:36;;:6;:36::i;:::-;12149:21;;;:60;12039:181;12230:23;;12249:4;12230:23;;;;;12263:25;;12230:23;12263:25;;;;;12298:21;;;;;;;;;;12335:43;;;;;;12344:5;;12351:10;;12263:25;;12298:21;;12335:43;;;;;;;;;;11566:819;;;;;;:::o;12391:162::-;12452:4;12477:5;;;12500:6;;;;12492:36;;;;;;;;;;;;;;12545:1;12391:162;-1:-1:-1;;;12391:162:2:o;12559:146::-;12620:4;12649:1;12644;:6;;12636:40;;;;;;;;;;;;;;-1:-1:-1;12693:5:2;;;12559:146::o;12711:::-;12816:9;12711:146;:::o;7672:373::-;7806:8;;7844:47;;7806:8;;;;;:27;;7844:47;;7855:6;;7863:5;;7870:9;;7881:4;;7887:3;;7844:47;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7844:47:2;;;7834:58;;;;;;7806:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7806:87:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7806:87:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7806:87:2;;;;;;;;;7805:88;7797:169;;;;;;;;;;;;;;7976:8;;:62;;;;;:8;;;;;:25;;:62;;8002:6;;8010:5;;8017:9;;8028:4;;8034:3;;7976:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7976:62:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7976:62:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7976:62:2;;;;;;;;;;7672:373;;;;;:::o;60:12799::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;;;;;;;-1:-1:-1;60:12799:2;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1609:696;;1732:3;1725:4;1717:6;1713:17;1709:27;1699:2;;1750:1;1747;1740:12;1699:2;1787:6;1774:20;1809:86;1824:70;1887:6;1824:70;;1809:86;1923:21;;;1967:4;1955:17;;;;1800:95;;-1:-1;1980:14;;1955:17;2075:1;2060:239;2085:6;2082:1;2079:13;2060:239;;;2168:3;2155:17;2147:6;2143:30;2192:43;2231:3;2219:10;2192:43;;;2180:56;;-1:-1;2259:4;2250:14;;;;2278;;;;;2107:1;2100:9;2060:239;;2331:707;;2448:3;2441:4;2433:6;2429:17;2425:27;2415:2;;2466:1;2463;2456:12;2415:2;2503:6;2490:20;2525:80;2540:64;2597:6;2540:64;;2525:80;2516:89;;2622:5;2647:6;2640:5;2633:21;2677:4;2669:6;2665:17;2655:27;;2699:4;2694:3;2690:14;2683:21;;2752:6;2799:3;2791:4;2783:6;2779:17;2774:3;2770:27;2767:36;2764:2;;;2816:1;2813;2806:12;2764:2;2841:1;2826:206;2851:6;2848:1;2845:13;2826:206;;;2909:3;2931:37;2964:3;2952:10;2931:37;;;2919:50;;-1:-1;2992:4;2983:14;;;;3011;;;;;2873:1;2866:9;2826:206;;3046:124;3110:20;;3135:30;3110:20;3135:30;;3177:128;3252:13;;3270:30;3252:13;3270:30;;3312:130;3379:20;;3404:33;3379:20;3404:33;;3449:134;3527:13;;3545:33;3527:13;3545:33;;3591:432;;3688:3;3681:4;3673:6;3669:17;3665:27;3655:2;;3706:1;3703;3696:12;3655:2;3743:6;3730:20;3765:60;3780:44;3817:6;3780:44;;3765:60;3756:69;;3845:6;3838:5;3831:21;3881:4;3873:6;3869:17;3914:4;3907:5;3903:16;3949:3;3940:6;3935:3;3931:16;3928:25;3925:2;;;3966:1;3963;3956:12;3925:2;3976:41;4010:6;4005:3;4000;3976:41;;;3648:375;;;;;;;;4032:442;;4144:3;4137:4;4129:6;4125:17;4121:27;4111:2;;4162:1;4159;4152:12;4111:2;4192:6;4186:13;4214:64;4229:48;4270:6;4229:48;;4214:64;4205:73;;4298:6;4291:5;4284:21;4334:4;4326:6;4322:17;4367:4;4360:5;4356:16;4402:3;4393:6;4388:3;4384:16;4381:25;4378:2;;;4419:1;4416;4409:12;4378:2;4429:39;4461:6;4456:3;4451;4429:39;;5654:126;5719:20;;5744:31;5719:20;5744:31;;5787:132;5864:13;;5882:32;5864:13;5882:32;;5926:241;;6030:2;6018:9;6009:7;6005:23;6001:32;5998:2;;;6046:1;6043;6036:12;5998:2;6081:1;6098:53;6143:7;6123:9;6098:53;;;6088:63;5992:175;-1:-1;;;;5992:175;6174:1415;;;;;;6467:3;6455:9;6446:7;6442:23;6438:33;6435:2;;;6484:1;6481;6474:12;6435:2;6519:31;;6570:18;6559:30;;6556:2;;;6602:1;6599;6592:12;6556:2;6622:78;6692:7;6683:6;6672:9;6668:22;6622:78;;;6612:88;;6498:208;6765:2;6754:9;6750:18;6737:32;6789:18;6781:6;6778:30;6775:2;;;6821:1;6818;6811:12;6775:2;6841:78;6911:7;6902:6;6891:9;6887:22;6841:78;;;6831:88;;6716:209;6984:2;6973:9;6969:18;6956:32;7008:18;7000:6;6997:30;6994:2;;;7040:1;7037;7030:12;6994:2;7060:84;7136:7;7127:6;7116:9;7112:22;7060:84;;;7050:94;;6935:215;7209:2;7198:9;7194:18;7181:32;7233:18;7225:6;7222:30;7219:2;;;7265:1;7262;7255:12;7219:2;7285:83;7360:7;7351:6;7340:9;7336:22;7285:83;;;7275:93;;7160:214;7433:3;7422:9;7418:19;7405:33;7458:18;7450:6;7447:30;7444:2;;;7490:1;7487;7480:12;7444:2;7510:63;7565:7;7556:6;7545:9;7541:22;7510:63;;;7500:73;;7384:195;6429:1160;;;;;;;;;7596:257;;7708:2;7696:9;7687:7;7683:23;7679:32;7676:2;;;7724:1;7721;7714:12;7676:2;7759:1;7776:61;7829:7;7809:9;7776:61;;7860:263;;7975:2;7963:9;7954:7;7950:23;7946:32;7943:2;;;7991:1;7988;7981:12;7943:2;8026:1;8043:64;8099:7;8079:9;8043:64;;8130:360;;8254:2;8242:9;8233:7;8229:23;8225:32;8222:2;;;8270:1;8267;8260:12;8222:2;8305:24;;8349:18;8338:30;;8335:2;;;8381:1;8378;8371:12;8335:2;8401:73;8466:7;8457:6;8446:9;8442:22;8401:73;;8497:241;;8601:2;8589:9;8580:7;8576:23;8572:32;8569:2;;;8617:1;8614;8607:12;8569:2;8652:1;8669:53;8714:7;8694:9;8669:53;;9015:366;;;9136:2;9124:9;9115:7;9111:23;9107:32;9104:2;;;9152:1;9149;9142:12;9104:2;9187:1;9204:53;9249:7;9229:9;9204:53;;;9194:63;;9166:97;9294:2;9312:53;9357:7;9348:6;9337:9;9333:22;9312:53;;;9302:63;;9273:98;9098:283;;;;;;9388:360;;;9506:2;9494:9;9485:7;9481:23;9477:32;9474:2;;;9522:1;9519;9512:12;9474:2;9557:1;9574:53;9619:7;9599:9;9574:53;;;9564:63;;9536:97;9664:2;9682:50;9724:7;9715:6;9704:9;9700:22;9682:50;;9755:733;;;;;;9922:3;9910:9;9901:7;9897:23;9893:33;9890:2;;;9939:1;9936;9929:12;9890:2;9974:1;9991:53;10036:7;10016:9;9991:53;;;9981:63;;9953:97;10081:2;10099:50;10141:7;10132:6;10121:9;10117:22;10099:50;;;10089:60;;10060:95;10186:2;10204:51;10247:7;10238:6;10227:9;10223:22;10204:51;;;10194:61;;10165:96;10292:2;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;;;10300:63;;10271:98;10400:3;10419:53;10464:7;10455:6;10444:9;10440:22;10419:53;;10495:261;;10609:2;10597:9;10588:7;10584:23;10580:32;10577:2;;;10625:1;10622;10615:12;10577:2;10660:1;10677:63;10732:7;10712:9;10677:63;;10764:173;;10851:46;10893:3;10885:6;10851:46;;;-1:-1;;10926:4;10917:14;;10844:93;10946:177;;11057:60;11113:3;11105:6;11057:60;;11322:173;;11409:46;11451:3;11443:6;11409:46;;11503:142;11594:45;11633:5;11594:45;;;11589:3;11582:58;11576:69;;;11652:103;11725:24;11743:5;11725:24;;11913:690;;12058:54;12106:5;12058:54;;;12125:86;12204:6;12199:3;12125:86;;;12118:93;;12232:56;12282:5;12232:56;;;12308:7;12336:1;12321:260;12346:6;12343:1;12340:13;12321:260;;;12413:6;12407:13;12434:63;12493:3;12478:13;12434:63;;;12427:70;;12514:60;12567:6;12514:60;;;12504:70;-1:-1;;12368:1;12361:9;12321:260;;;-1:-1;12594:3;;12037:566;-1:-1;;;;;12037:566;12638:888;;12793:59;12846:5;12793:59;;;12865:91;12949:6;12944:3;12865:91;;;12858:98;;12979:3;13021:4;13013:6;13009:17;13004:3;13000:27;13048:61;13103:5;13048:61;;;13129:7;13157:1;13142:345;13167:6;13164:1;13161:13;13142:345;;;13229:9;13223:4;13219:20;13214:3;13207:33;13274:6;13268:13;13296:74;13365:4;13350:13;13296:74;;;13288:82;;13387:65;13445:6;13387:65;;;13475:4;13466:14;;;;;13377:75;-1:-1;;13189:1;13182:9;13142:345;;;-1:-1;13500:4;;12772:754;-1:-1;;;;;;;12772:754;13563:896;;13720:60;13774:5;13720:60;;;13793:92;13878:6;13873:3;13793:92;;;13786:99;;13908:3;13950:4;13942:6;13938:17;13933:3;13929:27;13977:62;14033:5;13977:62;;;14059:7;14087:1;14072:348;14097:6;14094:1;14091:13;14072:348;;;14159:9;14153:4;14149:20;14144:3;14137:33;14204:6;14198:13;14226:76;14297:4;14282:13;14226:76;;;14218:84;;14319:66;14378:6;14319:66;;;14408:4;14399:14;;;;;14309:76;-1:-1;;14119:1;14112:9;14072:348;;14498:690;;14643:54;14691:5;14643:54;;;14710:86;14789:6;14784:3;14710:86;;;14703:93;;14817:56;14867:5;14817:56;;;14893:7;14921:1;14906:260;14931:6;14928:1;14925:13;14906:260;;;14998:6;14992:13;15019:63;15078:3;15063:13;15019:63;;;15012:70;;15099:60;15152:6;15099:60;;;15089:70;-1:-1;;14953:1;14946:9;14906:260;;15196:94;15263:21;15278:5;15263:21;;15408:113;15491:24;15509:5;15491:24;;15528:152;15629:45;15649:24;15667:5;15649:24;;;15629:45;;15687:343;;15797:38;15829:5;15797:38;;;15847:70;15910:6;15905:3;15847:70;;;15840:77;;15922:52;15967:6;15962:3;15955:4;15948:5;15944:16;15922:52;;;15995:29;16017:6;15995:29;;;15986:39;;;;15777:253;-1:-1;;;15777:253;16382:818;;16499:5;16493:12;16533:1;16522:9;16518:17;16546:1;16541:247;;;;16799:1;16794:400;;;;16511:683;;16541:247;16619:4;16615:1;16604:9;16600:17;16596:28;16638:70;16701:6;16696:3;16638:70;;;16742:9;16727:25;;16715:38;;16631:77;-1:-1;;16776:4;16767:14;;;-1:-1;16541:247;;16794:400;16863:1;16852:9;16848:17;16879:70;16942:6;16937:3;16879:70;;;16872:77;;16971:37;17002:5;16971:37;;;17024:1;17032:130;17046:6;17043:1;17040:13;17032:130;;;17105:14;;17092:11;;;17085:35;17152:1;17139:15;;;;17068:4;17061:12;17032:130;;;17176:11;;;-1:-1;;;16511:683;;16469:731;;;;;;17208:178;17317:63;17374:5;17317:63;;17568:156;17666:52;17712:5;17666:52;;19614:442;;19774:67;19838:2;19833:3;19774:67;;;19874:34;19854:55;;19943:34;19938:2;19929:12;;19922:56;20012:6;20007:2;19998:12;;19991:28;20047:2;20038:12;;19760:296;-1:-1;;19760:296;20065:443;;20225:67;20289:2;20284:3;20225:67;;;20325:34;20305:55;;20394:34;20389:2;20380:12;;20373:56;20463:7;20458:2;20449:12;;20442:29;20499:2;20490:12;;20211:297;-1:-1;;20211:297;20517:398;;20695:84;20777:1;20772:3;20695:84;;;20812:66;20792:87;;20907:1;20898:11;;20681:234;-1:-1;;20681:234;20924:378;;21084:67;21148:2;21143:3;21084:67;;;21184:34;21164:55;;21253:11;21248:2;21239:12;;21232:33;21293:2;21284:12;;21070:232;-1:-1;;21070:232;21311:382;;21471:67;21535:2;21530:3;21471:67;;;21571:34;21551:55;;21640:15;21635:2;21626:12;;21619:37;21684:2;21675:12;;21457:236;-1:-1;;21457:236;21702:463;;21862:67;21926:2;21921:3;21862:67;;;21962:34;21942:55;;22031:34;22026:2;22017:12;;22010:56;22100:27;22095:2;22086:12;;22079:49;22156:2;22147:12;;21848:317;-1:-1;;21848:317;22174:377;;22334:67;22398:2;22393:3;22334:67;;;22434:34;22414:55;;22503:10;22498:2;22489:12;;22482:32;22542:2;22533:12;;22320:231;-1:-1;;22320:231;22560:317;;22720:67;22784:2;22779:3;22720:67;;;22820:19;22800:40;;22868:2;22859:12;;22706:171;-1:-1;;22706:171;22886:477;;23064:85;23146:2;23141:3;23064:85;;;23182:34;23162:55;;23251:34;23246:2;23237:12;;23230:56;23320:5;23315:2;23306:12;;23299:27;23354:2;23345:12;;23050:313;-1:-1;;23050:313;23372:412;;23550:85;23632:2;23627:3;23550:85;;;23668:34;23648:55;;23737:9;23732:2;23723:12;;23716:31;23775:2;23766:12;;23536:248;-1:-1;;23536:248;23793:442;;23953:67;24017:2;24012:3;23953:67;;;24053:34;24033:55;;24122:34;24117:2;24108:12;;24101:56;24191:6;24186:2;24177:12;;24170:28;24226:2;24217:12;;23939:296;-1:-1;;23939:296;24244:384;;24404:67;24468:2;24463:3;24404:67;;;24504:34;24484:55;;24573:17;24568:2;24559:12;;24552:39;24619:2;24610:12;;24390:238;-1:-1;;24390:238;24637:442;;24797:67;24861:2;24856:3;24797:67;;;24897:34;24877:55;;24966:34;24961:2;24952:12;;24945:56;25035:6;25030:2;25021:12;;25014:28;25070:2;25061:12;;24783:296;-1:-1;;24783:296;25088:381;;25248:67;25312:2;25307:3;25248:67;;;25348:34;25328:55;;25417:14;25412:2;25403:12;;25396:36;25460:2;25451:12;;25234:235;-1:-1;;25234:235;25478:400;;25638:67;25702:2;25697:3;25638:67;;;25738:34;25718:55;;25807:33;25802:2;25793:12;;25786:55;25869:2;25860:12;;25624:254;-1:-1;;25624:254;25887:384;;26047:67;26111:2;26106:3;26047:67;;;26147:34;26127:55;;26216:17;26211:2;26202:12;;26195:39;26262:2;26253:12;;26033:238;-1:-1;;26033:238;26280:462;;26440:67;26504:2;26499:3;26440:67;;;26540:34;26520:55;;26609:34;26604:2;26595:12;;26588:56;26678:26;26673:2;26664:12;;26657:48;26733:2;26724:12;;26426:316;-1:-1;;26426:316;26751:391;;26911:67;26975:2;26970:3;26911:67;;;27011:34;26991:55;;27080:24;27075:2;27066:12;;27059:46;27133:2;27124:12;;26897:245;-1:-1;;26897:245;27151:379;;27311:67;27375:2;27370:3;27311:67;;;27411:34;27391:55;;27480:12;27475:2;27466:12;;27459:34;27521:2;27512:12;;27297:233;-1:-1;;27297:233;27539:321;;27699:67;27763:2;27758:3;27699:67;;;27799:23;27779:44;;27851:2;27842:12;;27685:175;-1:-1;;27685:175;27935:622;28146:23;;28076:4;28067:14;;;28175:57;28071:3;28146:23;28175:57;;;28096:142;28314:4;28307:5;28303:16;28297:23;28326:57;28377:4;28372:3;28368:14;28354:12;28326:57;;;28248:141;28463:4;28456:5;28452:16;28446:23;28475:61;28530:4;28525:3;28521:14;28507:12;28475:61;;;28399:143;28049:508;;;;28794:107;28873:22;28889:5;28873:22;;28908:124;28990:36;29020:5;28990:36;;29039:100;29110:23;29127:5;29110:23;;29146:650;;29401:148;29545:3;29401:148;;;29394:155;;29560:75;29631:3;29622:6;29560:75;;;29657:2;29652:3;29648:12;29641:19;;29671:75;29742:3;29733:6;29671:75;;;-1:-1;29768:2;29759:12;;29382:414;-1:-1;;29382:414;29803:372;;30002:148;30146:3;30002:148;;30182:372;;30381:148;30525:3;30381:148;;30561:340;30715:2;30700:18;;30729:79;30704:9;30781:6;30729:79;;;30819:72;30887:2;30876:9;30872:18;30863:6;30819:72;;30908:324;31054:2;31039:18;;31068:71;31043:9;31112:6;31068:71;;31239:533;31434:3;31419:19;;31449:71;31423:9;31493:6;31449:71;;;31531:72;31599:2;31588:9;31584:18;31575:6;31531:72;;;31614:66;31676:2;31665:9;31661:18;31652:6;31614:66;;;31691:71;31758:2;31747:9;31743:18;31734:6;31691:71;;31779:831;32047:3;32032:19;;32062:71;32036:9;32106:6;32062:71;;;32144:72;32212:2;32201:9;32197:18;32188:6;32144:72;;;32264:9;32258:4;32254:20;32249:2;32238:9;32234:18;32227:48;32289:78;32362:4;32353:6;32289:78;;;32281:86;;32415:9;32409:4;32405:20;32400:2;32389:9;32385:18;32378:48;32440:76;32511:4;32502:6;32440:76;;;32432:84;;32527:73;32595:3;32584:9;32580:19;32571:6;32527:73;;;32018:592;;;;;;;;;32617:819;32879:3;32864:19;;32894:71;32868:9;32938:6;32894:71;;;32976:72;33044:2;33033:9;33029:18;33020:6;32976:72;;;33096:9;33090:4;33086:20;33081:2;33070:9;33066:18;33059:48;33121:75;33191:4;33182:6;33121:75;;;33113:83;;33244:9;33238:4;33234:20;33229:2;33218:9;33214:18;33207:48;33269:73;33337:4;33328:6;33269:73;;33443:1183;33867:3;33882:47;;;33852:19;;33943:108;33852:19;34037:6;33943:108;;;33935:116;;34099:9;34093:4;34089:20;34084:2;34073:9;34069:18;34062:48;34124:108;34227:4;34218:6;34124:108;;;34116:116;;34280:9;34274:4;34270:20;34265:2;34254:9;34250:18;34243:48;34305:120;34420:4;34411:6;34305:120;;;34297:128;;34473:9;34467:4;34463:20;34458:2;34447:9;34443:18;34436:48;34498:118;34611:4;34602:6;34498:118;;34633:213;34751:2;34736:18;;34765:71;34740:9;34809:6;34765:71;;34853:547;35055:3;35040:19;;35070:71;35044:9;35114:6;35070:71;;;35152:72;35220:2;35209:9;35205:18;35196:6;35152:72;;;35235;35303:2;35292:9;35288:18;35279:6;35235:72;;;35318;35386:2;35375:9;35371:18;35362:6;35318:72;;35407:423;35575:2;35560:18;;35589:71;35564:9;35633:6;35589:71;;;35671:72;35739:2;35728:9;35724:18;35715:6;35671:72;;;35754:66;35816:2;35805:9;35801:18;35792:6;35754:66;;35837:539;36035:3;36020:19;;36050:71;36024:9;36094:6;36050:71;;;36132:68;36196:2;36185:9;36181:18;36172:6;36132:68;;;36211:72;36279:2;36268:9;36264:18;36255:6;36211:72;;;36294;36362:2;36351:9;36347:18;36338:6;36294:72;;36383:265;36527:2;36512:18;;36541:97;36516:9;36611:6;36541:97;;36917:243;37050:2;37035:18;;37064:86;37039:9;37123:6;37064:86;;37167:293;37301:2;37315:47;;;37286:18;;37376:74;37286:18;37436:6;37376:74;;37467:407;37658:2;37672:47;;;37643:18;;37733:131;37643:18;37733:131;;37881:407;38072:2;38086:47;;;38057:18;;38147:131;38057:18;38147:131;;38295:407;38486:2;38500:47;;;38471:18;;38561:131;38471:18;38561:131;;38709:407;38900:2;38914:47;;;38885:18;;38975:131;38885:18;38975:131;;39123:407;39314:2;39328:47;;;39299:18;;39389:131;39299:18;39389:131;;39537:407;39728:2;39742:47;;;39713:18;;39803:131;39713:18;39803:131;;39951:407;40142:2;40156:47;;;40127:18;;40217:131;40127:18;40217:131;;40365:407;40556:2;40570:47;;;40541:18;;40631:131;40541:18;40631:131;;40779:407;40970:2;40984:47;;;40955:18;;41045:131;40955:18;41045:131;;41193:407;41384:2;41398:47;;;41369:18;;41459:131;41369:18;41459:131;;41607:407;41798:2;41812:47;;;41783:18;;41873:131;41783:18;41873:131;;42021:407;42212:2;42226:47;;;42197:18;;42287:131;42197:18;42287:131;;42435:407;42626:2;42640:47;;;42611:18;;42701:131;42611:18;42701:131;;42849:407;43040:2;43054:47;;;43025:18;;43115:131;43025:18;43115:131;;43263:407;43454:2;43468:47;;;43439:18;;43529:131;43439:18;43529:131;;43677:407;43868:2;43882:47;;;43853:18;;43943:131;43853:18;43943:131;;44091:407;44282:2;44296:47;;;44267:18;;44357:131;44267:18;44357:131;;44505:309;44671:2;44656:18;;44685:119;44660:9;44777:6;44685:119;;45041:1847;45633:3;45618:19;;45648:71;45622:9;45692:6;45648:71;;;45730:80;45806:2;45795:9;45791:18;45782:6;45730:80;;;45858:9;45852:4;45848:20;45843:2;45832:9;45828:18;45821:48;45883:108;45986:4;45977:6;45883:108;;;45875:116;;46039:9;46033:4;46029:20;46024:2;46013:9;46009:18;46002:48;46064:108;46167:4;46158:6;46064:108;;;46056:116;;46221:9;46215:4;46211:20;46205:3;46194:9;46190:19;46183:49;46246:120;46361:4;46352:6;46246:120;;;46238:128;;46415:9;46409:4;46405:20;46399:3;46388:9;46384:19;46377:49;46440:118;46553:4;46544:6;46440:118;;;46432:126;;46569:73;46637:3;46626:9;46622:19;46613:6;46569:73;;;46653;46721:3;46710:9;46706:19;46697:6;46653:73;;;46775:9;46769:4;46765:20;46759:3;46748:9;46744:19;46737:49;46800:78;46873:4;46864:6;46800:78;;;46792:86;45604:1284;-1:-1;;;;;;;;;;;45604:1284;46895:1083;47225:3;47210:19;;47240:71;47214:9;47284:6;47240:71;;;47322:72;47390:2;47379:9;47375:18;47366:6;47322:72;;;47405;47473:2;47462:9;47458:18;47449:6;47405:72;;;47488;47556:2;47545:9;47541:18;47532:6;47488:72;;;47571:73;47639:3;47628:9;47624:19;47615:6;47571:73;;;47655;47723:3;47712:9;47708:19;47699:6;47655:73;;;47739;47807:3;47796:9;47792:19;47783:6;47739:73;;;47823:67;47885:3;47874:9;47870:19;47861:6;47823:67;;;47901;47963:3;47952:9;47948:19;47939:6;47901:67;;;47196:782;;;;;;;;;;;;;47985:324;48131:2;48116:18;;48145:71;48120:9;48189:6;48145:71;;48316:256;48378:2;48372:9;48404:17;;;48479:18;48464:34;;48500:22;;;48461:62;48458:2;;;48536:1;48533;48526:12;48458:2;48552;48545:22;48356:216;;-1:-1;48356:216;48579:304;;48738:18;48730:6;48727:30;48724:2;;;48770:1;48767;48760:12;48724:2;-1:-1;48805:4;48793:17;;;48858:15;;48661:222;49834:317;;49973:18;49965:6;49962:30;49959:2;;;50005:1;50002;49995:12;49959:2;-1:-1;50136:4;50072;50049:17;;;;50068:9;50045:33;50126:15;;49896:255;51140:151;51264:4;51255:14;;51212:79;51783:157;;51877:14;;;51919:4;51906:18;;;51836:104;52112:137;52215:12;;52186:63;53677:178;53795:19;;;53844:4;53835:14;;53788:67;55255:91;;55317:24;55335:5;55317:24;;55353:85;55419:13;55412:21;;55395:43;55524:140;55603:5;55609:50;55603:5;55609:50;;55671:121;55744:42;55733:54;;55716:76;55878:81;55949:4;55938:16;;55921:38;55966:104;56038:26;56027:38;;56010:60;56077:129;;56164:37;56195:5;56213:173;;56318:63;56375:5;56318:63;;56840:140;;56934:41;56969:5;56934:41;;57230:106;;57308:23;57325:5;57308:23;;57344:145;57425:6;57420:3;57415;57402:30;-1:-1;57481:1;57463:16;;57456:27;57395:94;57498:268;57563:1;57570:101;57584:6;57581:1;57578:13;57570:101;;;57651:11;;;57645:18;57632:11;;;57625:39;57606:2;57599:10;57570:101;;;57686:6;57683:1;57680:13;57677:2;;;-1:-1;;57751:1;57733:16;;57726:27;57547:219;57855:97;57943:2;57923:14;57939:7;57919:28;;57903:49;57960:108;58046:1;58039:5;58036:12;58026:2;;58052:9;58075:117;58144:24;58162:5;58144:24;;;58137:5;58134:35;58124:2;;58183:1;58180;58173:12;58199:111;58265:21;58280:5;58265:21;;58317:117;58386:24;58404:5;58386:24;;58565:113;58632:22;58648:5;58632:22;;58685:115;58753:23;58770:5;58753:23;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"timelock_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uni_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"ProposalQueued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"BALLOT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"cancel\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"}],\"name\":\"castVote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"castVoteBySig\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"getActions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"getReceipt\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"hasVoted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"votes\",\"type\":\"uint96\"}],\"internalType\":\"struct GovernorAlpha.Receipt\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"latestProposalIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalMaxOperations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"canceled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"queue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"quorumVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"state\",\"outputs\":[{\"internalType\":\"enum GovernorAlpha.ProposalState\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"timelock\",\"outputs\":[{\"internalType\":\"contract TimelockInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"uni\",\"outputs\":[{\"internalType\":\"contract UniInterface\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"votingDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"votingPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{\"proposalMaxOperations()\":{\"notice\":\"The maximum number of actions that can be included in a proposal\"},\"proposalThreshold()\":{\"notice\":\"The number of votes required in order for a voter to become a proposer\"},\"quorumVotes()\":{\"notice\":\"The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed\"},\"votingDelay()\":{\"notice\":\"The delay before voting on a proposal may take place, once proposed\"},\"votingPeriod()\":{\"notice\":\"The duration of voting on a proposal, in blocks\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/GovernorAlpha.sol\":\"GovernorAlpha\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/GovernorAlpha.sol\":{\"keccak256\":\"0xcbe387b12636c8f54f700982180777f08cf2a51b0d90b1a172d388f91602e7a4\",\"urls\":[\"bzz-raw://d040d754dc5866f5c8ba040d74971671ba2e45df06d0378c8d437c788888f209\",\"dweb:/ipfs/QmcjEBHEG5y3bgxvch17LkiK9AJDoTonYQ3PVy14QuFutG\"]}},\"version\":1}",
      "bytecode": "60806040523480156200001157600080fd5b50604051620039b4380380620039b4833981016040819052620000349162000079565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000e4565b80516200007381620000ca565b92915050565b600080604083850312156200008d57600080fd5b60006200009b858562000066565b9250506020620000ae8582860162000066565b9150509250929050565b60006001600160a01b03821662000073565b620000d581620000b8565b8114620000e157600080fd5b50565b6138c080620000f46000396000f3fe6080604052600436106101755760003560e01c80634634c61f116100cb578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103d0578063edc9af95146103fd578063fe0d94c11461041257610175565b8063da95691a1461037b578063ddf0b0091461039b578063deaaa7cc146103bb57610175565b8063b58131b0116100b0578063b58131b01461032f578063d33219b414610344578063da35c6641461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125cf565b610425565b6040516101af99989796959493929190613628565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af9190613395565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613451565b34801561020857600080fd5b5061021c610217366004612627565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244c565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125cf565b610512565b6040516101af9493929190613348565b3480156102a457600080fd5b506101cd6107ea565b3480156102b957600080fd5b506102cd6102c83660046125cf565b6107ef565b6040516101af9190613443565b3480156102e657600080fd5b5061021c6102f53660046125cf565b6109ba565b34801561030657600080fd5b5061021c610315366004612657565b610c8c565b34801561032657600080fd5b506101cd610e6e565b34801561033b57600080fd5b506101cd610e73565b34801561035057600080fd5b50610359610e82565b6040516101af9190613435565b34801561037257600080fd5b506101cd610e9e565b34801561038757600080fd5b506101cd610396366004612472565b610ea4565b3480156103a757600080fd5b5061021c6103b63660046125cf565b6113b5565b3480156103c757600080fd5b506101cd6116ac565b3480156103dc57600080fd5b506103f06103eb3660046125ed565b6116b8565b6040516101af9190613572565b34801561040957600080fd5b50610359611739565b61021c6104203660046125cf565b611755565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104d6338383611989565b5050565b60046020526000908152604090205481565b6040516104f890613239565b604051809103902081565b6a211654585005212800000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610576575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f357602002820191906000526020600020905b8154815260200190600101908083116105df575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001906001019061061b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b50505050508152602001906001019061070b565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108035750600082115b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613482565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108675760029150506109b5565b8060070154431161087c5760009150506109b5565b806008015443116108915760019150506109b5565b80600a015481600901541115806108b257506108ab610503565b8160090154105b156108c15760039150506109b5565b60028101546108d45760049150506109b5565b600b810154610100900460ff16156108f05760079150506109b5565b6002810154600054604080517fc1a287e2000000000000000000000000000000000000000000000000000000008152905161099f939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099a919081019061257c565b611c14565b42106109af5760069150506109b5565b60059150505b919050565b60006109c5826107ef565b905060078160078111156109d557fe5b1415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613542565b6000828152600360205260409020610a23610e73565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a59904390611c5a565b6040518363ffffffff1660e01b8152600401610a7692919061326a565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac691908101906126bf565b6bffffffffffffffffffffffff1610610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134e2565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c4f5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7a57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610baf57fe5b9060005260206000200154856005018581548110610bc957fe5b90600052602060002001866006018681548110610be257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c11959493929190613307565b600060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505060019092019150610b3b9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7f9190613395565b60405180910390a1505050565b6000604051610c9a90613239565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d01611c9c565b30604051602001610d1594939291906133a3565b6040516020818303038152906040528051906020012090506000604051610d3b90613244565b604051908190038120610d5491899089906020016133d8565b60405160208183030381529060405280519060200120905060008282604051602001610d81929190613208565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbe9493929190613400565b6020604051602081039080840390855afa158015610de0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613522565b610e63818a8a611989565b505050505050505050565b600a90565b6a084595161401484a00000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610eae610e73565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610edc904390611c5a565b6040518363ffffffff1660e01b8152600401610ef992919061324f565b60206040518083038186803b158015610f1157600080fd5b505afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4991908101906126bf565b6bffffffffffffffffffffffff1611610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613512565b84518651148015610fa0575083518651145b8015610fad575082518651145b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134d2565b855161101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613502565b611023610e6e565b8651111561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134b2565b33600090815260046020526040902054801561110e57600061107e826107ef565b9050600181600781111561108e57fe5b14156110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613532565b60008160078111156110d457fe5b141561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134a2565b505b600061111c4361099a6107ea565b9050600061112c8261099a61048b565b600280546001019055905061113f611e4c565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611249929190611ece565b5060808201518051611265916004840191602090910190611f58565b5060a08201518051611281916005840191602090910190611f9f565b5060c0820151805161129d916006840191602090910190611ff8565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161139d99989796959493929190613580565b60405180910390a15193505050505b95945050505050565b60046113c0826107ef565b60078111156113cb57fe5b14611402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613462565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148193429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096257600080fd5b905060005b60038301548110156116725761166a8360030182815481106114a457fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114d957fe5b90600052602060002001548560050184815481106114f357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b50505050508660060185815481106115b357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505086611ca0565b600101611486565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7f90859084906136ae565b6040516104f890613244565b6116c0612051565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6005611760826107ef565b600781111561176b57fe5b146117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613472565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194d5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061181f57fe5b906000526020600020015484600301848154811061183957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186e57fe5b906000526020600020015486600501868154811061188857fe5b906000526020600020018760060187815481106118a157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d0959493929190613307565b6000604051808303818588803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611944919081019061259a565b506001016117e0565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197d9190613395565b60405180910390a15050565b6001611994836107ef565b600781111561199f57fe5b146119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613552565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613492565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa2918a9160040161326a565b60206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af291908101906126bf565b90508315611b2057611b168360090154826bffffffffffffffffffffffff16611c14565b6009840155611b42565b611b3c83600a0154826bffffffffffffffffffffffff16611c14565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c04908890889088908690613278565b60405180910390a1505050505050565b600082820183811015611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134c2565b9392505050565b600082821115611c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613562565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdb90889088908890889088906020016132ad565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0d9190613395565b60206040518083038186803b158015611d2557600080fd5b505afa158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5d919081019061255e565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134f2565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df290889088908890889088906004016132ad565b602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e44919081019061257c565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f48579160200282015b82811115611f4857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eee565b50611f54929150612071565b5090565b828054828255906000526020600020908101928215611f93579160200282015b82811115611f93578251825591602001919060010190611f78565b50611f549291506120ad565b828054828255906000526020600020908101928215611fec579160200282015b82811115611fec5782518051611fdc9184916020909101906120c7565b5091602001919060010190611fbf565b50611f54929150612134565b828054828255906000526020600020908101928215612045579160200282015b8281111561204557825180516120359184916020909101906120c7565b5091602001919060010190612018565b50611f54929150612157565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f545780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612077565b61048f91905b80821115611f5457600081556001016120b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210857805160ff1916838001178555611f93565b82800160010185558215611f935791820182811115611f93578251825591602001919060010190611f78565b61048f91905b80821115611f5457600061214e828261217a565b5060010161213a565b61048f91905b80821115611f54576000612171828261217a565b5060010161215d565b50805460018160011615610100020316600290046000825580601f106121a057506121be565b601f0160209004906000526020600020908101906121be91906120ad565b50565b803561173381613845565b600082601f8301126121dd57600080fd5b81356121f06121eb826136e3565b6136bc565b9150818183526020840193506020810190508385602084028201111561221557600080fd5b60005b83811015612241578161222b88826121c1565b8452506020928301929190910190600101612218565b5050505092915050565b600082601f83011261225c57600080fd5b813561226a6121eb826136e3565b81815260209384019390925082018360005b83811015612241578135860161229288826123a1565b845250602092830192919091019060010161227c565b600082601f8301126122b957600080fd5b81356122c76121eb826136e3565b81815260209384019390925082018360005b8381101561224157813586016122ef88826123a1565b84525060209283019291909101906001016122d9565b600082601f83011261231657600080fd5b81356123246121eb826136e3565b9150818183526020840193506020810190508385602084028201111561234957600080fd5b60005b83811015612241578161235f888261238b565b845250602092830192919091019060010161234c565b803561173381613859565b805161173381613859565b803561173381613862565b805161173381613862565b600082601f8301126123b257600080fd5b81356123c06121eb82613704565b915080825260208301602083018583830111156123dc57600080fd5b6123e78382846137db565b50505092915050565b600082601f83011261240157600080fd5b815161240f6121eb82613704565b9150808252602083016020830185838301111561242b57600080fd5b6123e78382846137e7565b80356117338161386b565b805161173381613874565b60006020828403121561245e57600080fd5b600061246a84846121c1565b949350505050565b600080600080600060a0868803121561248a57600080fd5b853567ffffffffffffffff8111156124a157600080fd5b6124ad888289016121cc565b955050602086013567ffffffffffffffff8111156124ca57600080fd5b6124d688828901612305565b945050604086013567ffffffffffffffff8111156124f357600080fd5b6124ff888289016122a8565b935050606086013567ffffffffffffffff81111561251c57600080fd5b6125288882890161224b565b925050608086013567ffffffffffffffff81111561254557600080fd5b612551888289016123a1565b9150509295509295909350565b60006020828403121561257057600080fd5b600061246a8484612380565b60006020828403121561258e57600080fd5b600061246a8484612396565b6000602082840312156125ac57600080fd5b815167ffffffffffffffff8111156125c357600080fd5b61246a848285016123f0565b6000602082840312156125e157600080fd5b600061246a848461238b565b6000806040838503121561260057600080fd5b600061260c858561238b565b925050602061261d858286016121c1565b9150509250929050565b6000806040838503121561263a57600080fd5b6000612646858561238b565b925050602061261d85828601612375565b600080600080600060a0868803121561266f57600080fd5b600061267b888861238b565b955050602061268c88828901612375565b945050604061269d88828901612436565b93505060606126ae8882890161238b565b92505060806125518882890161238b565b6000602082840312156126d157600080fd5b600061246a8484612441565b60006126e98383612718565b505060200190565b6000611c5383836128ba565b60006126e983836128a0565b612712816137b3565b82525050565b61271281613769565b600061272c8261375c565b6127368185613760565b93506127418361374a565b8060005b8381101561276f57815161275988826126dd565b97506127648361374a565b925050600101612745565b509495945050505050565b60006127858261375c565b61278f8185613760565b9350836020820285016127a18561374a565b8060005b858110156127db57848403895281516127be85826126f1565b94506127c98361374a565b60209a909a01999250506001016127a5565b5091979650505050505050565b60006127f38261375c565b6127fd8185613760565b93508360208202850161280f8561374a565b8060005b858110156127db578484038952815161282c85826126f1565b94506128378361374a565b60209a909a0199925050600101612813565b60006128548261375c565b61285e8185613760565b93506128698361374a565b8060005b8381101561276f57815161288188826126fd565b975061288c8361374a565b92505060010161286d565b61271281613774565b6127128161048f565b6127126128b58261048f565b61048f565b60006128c58261375c565b6128cf8185613760565b93506128df8185602086016137e7565b6128e881613813565b9093019392505050565b60008154600181166000811461290f576001811461295357612992565b607f60028304166129208187613760565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612992565b600282046129618187613760565b955061296c85613750565b60005b8281101561298b5781548882015260019091019060200161296f565b8701945050505b505092915050565b612712816137ba565b612712816137c5565b60006129b9604483613760565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a3e604583613760565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ac36002836109b5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612afc602983613760565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612b5b602d83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612bba605983613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612c3f602883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612c9e601183613760565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612cd76043836109b5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612d5c6027836109b5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612dbb604483613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e40602f83613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e9f604483613760565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f24602c83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612f83603f83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612fe2602f83613760565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000613041605883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130c6603683613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613125602a83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613184601583613760565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131c18482612897565b5060208201516131d46020850182612897565b5060408201516131e760408501826131ff565b50505050565b6127128161379c565b612712816137d0565b612712816137a2565b600061321382612ab6565b915061321f82856128a9565b60208201915061322f82846128a9565b5060200192915050565b600061173382612cca565b600061173382612d4f565b6040810161325d8285612709565b611c5360208301846128a0565b6040810161325d8285612718565b608081016132868287612718565b61329360208301866128a0565b6132a06040830185612897565b6113ac60608301846131f6565b60a081016132bb8288612718565b6132c860208301876128a0565b81810360408301526132da81866128ba565b905081810360608301526132ee81856128ba565b90506132fd60808301846128a0565b9695505050505050565b60a081016133158288612718565b61332260208301876128a0565b818103604083015261333481866128f2565b905081810360608301526132ee81856128f2565b608080825281016133598187612721565b9050818103602083015261336d8186612849565b9050818103604083015261338181856127e8565b905081810360608301526132fd818461277a565b6020810161173382846128a0565b608081016133b182876128a0565b6133be60208301866128a0565b6133cb60408301856128a0565b6113ac6060830184612718565b606081016133e682866128a0565b6133f360208301856128a0565b61246a6040830184612897565b6080810161340e82876128a0565b61341b60208301866131ed565b61342860408301856128a0565b6113ac60608301846128a0565b60208101611733828461299a565b6020810161173382846129a3565b60208082528101611c5381846128ba565b60208082528101611733816129ac565b6020808252810161173381612a31565b6020808252810161173381612aef565b6020808252810161173381612b4e565b6020808252810161173381612bad565b6020808252810161173381612c32565b6020808252810161173381612c91565b6020808252810161173381612dae565b6020808252810161173381612e33565b6020808252810161173381612e92565b6020808252810161173381612f17565b6020808252810161173381612f76565b6020808252810161173381612fd5565b6020808252810161173381613034565b60208082528101611733816130b9565b6020808252810161173381613118565b6020808252810161173381613177565b6060810161173382846131b0565b610120810161358f828c6128a0565b61359c602083018b612709565b81810360408301526135ae818a612721565b905081810360608301526135c28189612849565b905081810360808301526135d681886127e8565b905081810360a08301526135ea818761277a565b90506135f960c08301866128a0565b61360660e08301856128a0565b81810361010083015261361981846128ba565b9b9a5050505050505050505050565b6101208101613637828c6128a0565b613644602083018b612718565b613651604083018a6128a0565b61365e60608301896128a0565b61366b60808301886128a0565b61367860a08301876128a0565b61368560c08301866128a0565b61369260e0830185612897565b6136a0610100830184612897565b9a9950505050505050505050565b6040810161325d82856128a0565b60405181810167ffffffffffffffff811182821017156136db57600080fd5b604052919050565b600067ffffffffffffffff8211156136fa57600080fd5b5060209081020190565b600067ffffffffffffffff82111561371b57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061173382613783565b151590565b806109b58161383b565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611733825b600061173382613769565b600061173382613779565b6000611733826137a2565b82818337506000910152565b60005b838110156138025781810151838201526020016137ea565b838111156131e75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121be57fe5b61384e81613769565b81146121be57600080fd5b61384e81613774565b61384e8161048f565b61384e8161379c565b61384e816137a256fea365627a7a72315820fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb26c6578706572696d656e74616cf564736f6c63430005100040",
      "bin": "60806040523480156200001157600080fd5b50604051620039b4380380620039b4833981016040819052620000349162000079565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000e4565b80516200007381620000ca565b92915050565b600080604083850312156200008d57600080fd5b60006200009b858562000066565b9250506020620000ae8582860162000066565b9150509250929050565b60006001600160a01b03821662000073565b620000d581620000b8565b8114620000e157600080fd5b50565b6138c080620000f46000396000f3fe6080604052600436106101755760003560e01c80634634c61f116100cb578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103d0578063edc9af95146103fd578063fe0d94c11461041257610175565b8063da95691a1461037b578063ddf0b0091461039b578063deaaa7cc146103bb57610175565b8063b58131b0116100b0578063b58131b01461032f578063d33219b414610344578063da35c6641461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125cf565b610425565b6040516101af99989796959493929190613628565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af9190613395565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613451565b34801561020857600080fd5b5061021c610217366004612627565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244c565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125cf565b610512565b6040516101af9493929190613348565b3480156102a457600080fd5b506101cd6107ea565b3480156102b957600080fd5b506102cd6102c83660046125cf565b6107ef565b6040516101af9190613443565b3480156102e657600080fd5b5061021c6102f53660046125cf565b6109ba565b34801561030657600080fd5b5061021c610315366004612657565b610c8c565b34801561032657600080fd5b506101cd610e6e565b34801561033b57600080fd5b506101cd610e73565b34801561035057600080fd5b50610359610e82565b6040516101af9190613435565b34801561037257600080fd5b506101cd610e9e565b34801561038757600080fd5b506101cd610396366004612472565b610ea4565b3480156103a757600080fd5b5061021c6103b63660046125cf565b6113b5565b3480156103c757600080fd5b506101cd6116ac565b3480156103dc57600080fd5b506103f06103eb3660046125ed565b6116b8565b6040516101af9190613572565b34801561040957600080fd5b50610359611739565b61021c6104203660046125cf565b611755565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104d6338383611989565b5050565b60046020526000908152604090205481565b6040516104f890613239565b604051809103902081565b6a211654585005212800000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610576575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f357602002820191906000526020600020905b8154815260200190600101908083116105df575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001906001019061061b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b50505050508152602001906001019061070b565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108035750600082115b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613482565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108675760029150506109b5565b8060070154431161087c5760009150506109b5565b806008015443116108915760019150506109b5565b80600a015481600901541115806108b257506108ab610503565b8160090154105b156108c15760039150506109b5565b60028101546108d45760049150506109b5565b600b810154610100900460ff16156108f05760079150506109b5565b6002810154600054604080517fc1a287e2000000000000000000000000000000000000000000000000000000008152905161099f939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099a919081019061257c565b611c14565b42106109af5760069150506109b5565b60059150505b919050565b60006109c5826107ef565b905060078160078111156109d557fe5b1415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613542565b6000828152600360205260409020610a23610e73565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a59904390611c5a565b6040518363ffffffff1660e01b8152600401610a7692919061326a565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac691908101906126bf565b6bffffffffffffffffffffffff1610610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134e2565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c4f5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7a57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610baf57fe5b9060005260206000200154856005018581548110610bc957fe5b90600052602060002001866006018681548110610be257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c11959493929190613307565b600060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505060019092019150610b3b9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7f9190613395565b60405180910390a1505050565b6000604051610c9a90613239565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d01611c9c565b30604051602001610d1594939291906133a3565b6040516020818303038152906040528051906020012090506000604051610d3b90613244565b604051908190038120610d5491899089906020016133d8565b60405160208183030381529060405280519060200120905060008282604051602001610d81929190613208565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbe9493929190613400565b6020604051602081039080840390855afa158015610de0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613522565b610e63818a8a611989565b505050505050505050565b600a90565b6a084595161401484a00000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610eae610e73565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610edc904390611c5a565b6040518363ffffffff1660e01b8152600401610ef992919061324f565b60206040518083038186803b158015610f1157600080fd5b505afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4991908101906126bf565b6bffffffffffffffffffffffff1611610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613512565b84518651148015610fa0575083518651145b8015610fad575082518651145b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134d2565b855161101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613502565b611023610e6e565b8651111561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134b2565b33600090815260046020526040902054801561110e57600061107e826107ef565b9050600181600781111561108e57fe5b14156110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613532565b60008160078111156110d457fe5b141561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134a2565b505b600061111c4361099a6107ea565b9050600061112c8261099a61048b565b600280546001019055905061113f611e4c565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611249929190611ece565b5060808201518051611265916004840191602090910190611f58565b5060a08201518051611281916005840191602090910190611f9f565b5060c0820151805161129d916006840191602090910190611ff8565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161139d99989796959493929190613580565b60405180910390a15193505050505b95945050505050565b60046113c0826107ef565b60078111156113cb57fe5b14611402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613462565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148193429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096257600080fd5b905060005b60038301548110156116725761166a8360030182815481106114a457fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114d957fe5b90600052602060002001548560050184815481106114f357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b50505050508660060185815481106115b357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505086611ca0565b600101611486565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7f90859084906136ae565b6040516104f890613244565b6116c0612051565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6005611760826107ef565b600781111561176b57fe5b146117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613472565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194d5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061181f57fe5b906000526020600020015484600301848154811061183957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186e57fe5b906000526020600020015486600501868154811061188857fe5b906000526020600020018760060187815481106118a157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d0959493929190613307565b6000604051808303818588803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611944919081019061259a565b506001016117e0565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197d9190613395565b60405180910390a15050565b6001611994836107ef565b600781111561199f57fe5b146119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613552565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613492565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa2918a9160040161326a565b60206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af291908101906126bf565b90508315611b2057611b168360090154826bffffffffffffffffffffffff16611c14565b6009840155611b42565b611b3c83600a0154826bffffffffffffffffffffffff16611c14565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c04908890889088908690613278565b60405180910390a1505050505050565b600082820183811015611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134c2565b9392505050565b600082821115611c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613562565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdb90889088908890889088906020016132ad565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0d9190613395565b60206040518083038186803b158015611d2557600080fd5b505afa158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5d919081019061255e565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134f2565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df290889088908890889088906004016132ad565b602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e44919081019061257c565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f48579160200282015b82811115611f4857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eee565b50611f54929150612071565b5090565b828054828255906000526020600020908101928215611f93579160200282015b82811115611f93578251825591602001919060010190611f78565b50611f549291506120ad565b828054828255906000526020600020908101928215611fec579160200282015b82811115611fec5782518051611fdc9184916020909101906120c7565b5091602001919060010190611fbf565b50611f54929150612134565b828054828255906000526020600020908101928215612045579160200282015b8281111561204557825180516120359184916020909101906120c7565b5091602001919060010190612018565b50611f54929150612157565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f545780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612077565b61048f91905b80821115611f5457600081556001016120b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210857805160ff1916838001178555611f93565b82800160010185558215611f935791820182811115611f93578251825591602001919060010190611f78565b61048f91905b80821115611f5457600061214e828261217a565b5060010161213a565b61048f91905b80821115611f54576000612171828261217a565b5060010161215d565b50805460018160011615610100020316600290046000825580601f106121a057506121be565b601f0160209004906000526020600020908101906121be91906120ad565b50565b803561173381613845565b600082601f8301126121dd57600080fd5b81356121f06121eb826136e3565b6136bc565b9150818183526020840193506020810190508385602084028201111561221557600080fd5b60005b83811015612241578161222b88826121c1565b8452506020928301929190910190600101612218565b5050505092915050565b600082601f83011261225c57600080fd5b813561226a6121eb826136e3565b81815260209384019390925082018360005b83811015612241578135860161229288826123a1565b845250602092830192919091019060010161227c565b600082601f8301126122b957600080fd5b81356122c76121eb826136e3565b81815260209384019390925082018360005b8381101561224157813586016122ef88826123a1565b84525060209283019291909101906001016122d9565b600082601f83011261231657600080fd5b81356123246121eb826136e3565b9150818183526020840193506020810190508385602084028201111561234957600080fd5b60005b83811015612241578161235f888261238b565b845250602092830192919091019060010161234c565b803561173381613859565b805161173381613859565b803561173381613862565b805161173381613862565b600082601f8301126123b257600080fd5b81356123c06121eb82613704565b915080825260208301602083018583830111156123dc57600080fd5b6123e78382846137db565b50505092915050565b600082601f83011261240157600080fd5b815161240f6121eb82613704565b9150808252602083016020830185838301111561242b57600080fd5b6123e78382846137e7565b80356117338161386b565b805161173381613874565b60006020828403121561245e57600080fd5b600061246a84846121c1565b949350505050565b600080600080600060a0868803121561248a57600080fd5b853567ffffffffffffffff8111156124a157600080fd5b6124ad888289016121cc565b955050602086013567ffffffffffffffff8111156124ca57600080fd5b6124d688828901612305565b945050604086013567ffffffffffffffff8111156124f357600080fd5b6124ff888289016122a8565b935050606086013567ffffffffffffffff81111561251c57600080fd5b6125288882890161224b565b925050608086013567ffffffffffffffff81111561254557600080fd5b612551888289016123a1565b9150509295509295909350565b60006020828403121561257057600080fd5b600061246a8484612380565b60006020828403121561258e57600080fd5b600061246a8484612396565b6000602082840312156125ac57600080fd5b815167ffffffffffffffff8111156125c357600080fd5b61246a848285016123f0565b6000602082840312156125e157600080fd5b600061246a848461238b565b6000806040838503121561260057600080fd5b600061260c858561238b565b925050602061261d858286016121c1565b9150509250929050565b6000806040838503121561263a57600080fd5b6000612646858561238b565b925050602061261d85828601612375565b600080600080600060a0868803121561266f57600080fd5b600061267b888861238b565b955050602061268c88828901612375565b945050604061269d88828901612436565b93505060606126ae8882890161238b565b92505060806125518882890161238b565b6000602082840312156126d157600080fd5b600061246a8484612441565b60006126e98383612718565b505060200190565b6000611c5383836128ba565b60006126e983836128a0565b612712816137b3565b82525050565b61271281613769565b600061272c8261375c565b6127368185613760565b93506127418361374a565b8060005b8381101561276f57815161275988826126dd565b97506127648361374a565b925050600101612745565b509495945050505050565b60006127858261375c565b61278f8185613760565b9350836020820285016127a18561374a565b8060005b858110156127db57848403895281516127be85826126f1565b94506127c98361374a565b60209a909a01999250506001016127a5565b5091979650505050505050565b60006127f38261375c565b6127fd8185613760565b93508360208202850161280f8561374a565b8060005b858110156127db578484038952815161282c85826126f1565b94506128378361374a565b60209a909a0199925050600101612813565b60006128548261375c565b61285e8185613760565b93506128698361374a565b8060005b8381101561276f57815161288188826126fd565b975061288c8361374a565b92505060010161286d565b61271281613774565b6127128161048f565b6127126128b58261048f565b61048f565b60006128c58261375c565b6128cf8185613760565b93506128df8185602086016137e7565b6128e881613813565b9093019392505050565b60008154600181166000811461290f576001811461295357612992565b607f60028304166129208187613760565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612992565b600282046129618187613760565b955061296c85613750565b60005b8281101561298b5781548882015260019091019060200161296f565b8701945050505b505092915050565b612712816137ba565b612712816137c5565b60006129b9604483613760565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a3e604583613760565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ac36002836109b5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612afc602983613760565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612b5b602d83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612bba605983613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612c3f602883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612c9e601183613760565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612cd76043836109b5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612d5c6027836109b5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612dbb604483613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e40602f83613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e9f604483613760565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f24602c83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612f83603f83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612fe2602f83613760565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000613041605883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130c6603683613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613125602a83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613184601583613760565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131c18482612897565b5060208201516131d46020850182612897565b5060408201516131e760408501826131ff565b50505050565b6127128161379c565b612712816137d0565b612712816137a2565b600061321382612ab6565b915061321f82856128a9565b60208201915061322f82846128a9565b5060200192915050565b600061173382612cca565b600061173382612d4f565b6040810161325d8285612709565b611c5360208301846128a0565b6040810161325d8285612718565b608081016132868287612718565b61329360208301866128a0565b6132a06040830185612897565b6113ac60608301846131f6565b60a081016132bb8288612718565b6132c860208301876128a0565b81810360408301526132da81866128ba565b905081810360608301526132ee81856128ba565b90506132fd60808301846128a0565b9695505050505050565b60a081016133158288612718565b61332260208301876128a0565b818103604083015261333481866128f2565b905081810360608301526132ee81856128f2565b608080825281016133598187612721565b9050818103602083015261336d8186612849565b9050818103604083015261338181856127e8565b905081810360608301526132fd818461277a565b6020810161173382846128a0565b608081016133b182876128a0565b6133be60208301866128a0565b6133cb60408301856128a0565b6113ac6060830184612718565b606081016133e682866128a0565b6133f360208301856128a0565b61246a6040830184612897565b6080810161340e82876128a0565b61341b60208301866131ed565b61342860408301856128a0565b6113ac60608301846128a0565b60208101611733828461299a565b6020810161173382846129a3565b60208082528101611c5381846128ba565b60208082528101611733816129ac565b6020808252810161173381612a31565b6020808252810161173381612aef565b6020808252810161173381612b4e565b6020808252810161173381612bad565b6020808252810161173381612c32565b6020808252810161173381612c91565b6020808252810161173381612dae565b6020808252810161173381612e33565b6020808252810161173381612e92565b6020808252810161173381612f17565b6020808252810161173381612f76565b6020808252810161173381612fd5565b6020808252810161173381613034565b60208082528101611733816130b9565b6020808252810161173381613118565b6020808252810161173381613177565b6060810161173382846131b0565b610120810161358f828c6128a0565b61359c602083018b612709565b81810360408301526135ae818a612721565b905081810360608301526135c28189612849565b905081810360808301526135d681886127e8565b905081810360a08301526135ea818761277a565b90506135f960c08301866128a0565b61360660e08301856128a0565b81810361010083015261361981846128ba565b9b9a5050505050505050505050565b6101208101613637828c6128a0565b613644602083018b612718565b613651604083018a6128a0565b61365e60608301896128a0565b61366b60808301886128a0565b61367860a08301876128a0565b61368560c08301866128a0565b61369260e0830185612897565b6136a0610100830184612897565b9a9950505050505050505050565b6040810161325d82856128a0565b60405181810167ffffffffffffffff811182821017156136db57600080fd5b604052919050565b600067ffffffffffffffff8211156136fa57600080fd5b5060209081020190565b600067ffffffffffffffff82111561371b57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061173382613783565b151590565b806109b58161383b565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611733825b600061173382613769565b600061173382613779565b6000611733826137a2565b82818337506000910152565b60005b838110156138025781810151838201526020016137ea565b838111156131e75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121be57fe5b61384e81613769565b81146121be57600080fd5b61384e81613774565b61384e8161048f565b61384e8161379c565b61384e816137a256fea365627a7a72315820fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb26c6578706572696d656e74616cf564736f6c63430005100040",
      "bin-runtime": "6080604052600436106101755760003560e01c80634634c61f116100cb578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103d0578063edc9af95146103fd578063fe0d94c11461041257610175565b8063da95691a1461037b578063ddf0b0091461039b578063deaaa7cc146103bb57610175565b8063b58131b0116100b0578063b58131b01461032f578063d33219b414610344578063da35c6641461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125cf565b610425565b6040516101af99989796959493929190613628565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af9190613395565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613451565b34801561020857600080fd5b5061021c610217366004612627565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244c565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125cf565b610512565b6040516101af9493929190613348565b3480156102a457600080fd5b506101cd6107ea565b3480156102b957600080fd5b506102cd6102c83660046125cf565b6107ef565b6040516101af9190613443565b3480156102e657600080fd5b5061021c6102f53660046125cf565b6109ba565b34801561030657600080fd5b5061021c610315366004612657565b610c8c565b34801561032657600080fd5b506101cd610e6e565b34801561033b57600080fd5b506101cd610e73565b34801561035057600080fd5b50610359610e82565b6040516101af9190613435565b34801561037257600080fd5b506101cd610e9e565b34801561038757600080fd5b506101cd610396366004612472565b610ea4565b3480156103a757600080fd5b5061021c6103b63660046125cf565b6113b5565b3480156103c757600080fd5b506101cd6116ac565b3480156103dc57600080fd5b506103f06103eb3660046125ed565b6116b8565b6040516101af9190613572565b34801561040957600080fd5b50610359611739565b61021c6104203660046125cf565b611755565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104d6338383611989565b5050565b60046020526000908152604090205481565b6040516104f890613239565b604051809103902081565b6a211654585005212800000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610576575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f357602002820191906000526020600020905b8154815260200190600101908083116105df575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001906001019061061b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b50505050508152602001906001019061070b565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108035750600082115b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613482565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108675760029150506109b5565b8060070154431161087c5760009150506109b5565b806008015443116108915760019150506109b5565b80600a015481600901541115806108b257506108ab610503565b8160090154105b156108c15760039150506109b5565b60028101546108d45760049150506109b5565b600b810154610100900460ff16156108f05760079150506109b5565b6002810154600054604080517fc1a287e2000000000000000000000000000000000000000000000000000000008152905161099f939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099a919081019061257c565b611c14565b42106109af5760069150506109b5565b60059150505b919050565b60006109c5826107ef565b905060078160078111156109d557fe5b1415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613542565b6000828152600360205260409020610a23610e73565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a59904390611c5a565b6040518363ffffffff1660e01b8152600401610a7692919061326a565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac691908101906126bf565b6bffffffffffffffffffffffff1610610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134e2565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c4f5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7a57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610baf57fe5b9060005260206000200154856005018581548110610bc957fe5b90600052602060002001866006018681548110610be257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c11959493929190613307565b600060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505060019092019150610b3b9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7f9190613395565b60405180910390a1505050565b6000604051610c9a90613239565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d01611c9c565b30604051602001610d1594939291906133a3565b6040516020818303038152906040528051906020012090506000604051610d3b90613244565b604051908190038120610d5491899089906020016133d8565b60405160208183030381529060405280519060200120905060008282604051602001610d81929190613208565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbe9493929190613400565b6020604051602081039080840390855afa158015610de0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613522565b610e63818a8a611989565b505050505050505050565b600a90565b6a084595161401484a00000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610eae610e73565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610edc904390611c5a565b6040518363ffffffff1660e01b8152600401610ef992919061324f565b60206040518083038186803b158015610f1157600080fd5b505afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4991908101906126bf565b6bffffffffffffffffffffffff1611610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613512565b84518651148015610fa0575083518651145b8015610fad575082518651145b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134d2565b855161101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613502565b611023610e6e565b8651111561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134b2565b33600090815260046020526040902054801561110e57600061107e826107ef565b9050600181600781111561108e57fe5b14156110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613532565b60008160078111156110d457fe5b141561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134a2565b505b600061111c4361099a6107ea565b9050600061112c8261099a61048b565b600280546001019055905061113f611e4c565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611249929190611ece565b5060808201518051611265916004840191602090910190611f58565b5060a08201518051611281916005840191602090910190611f9f565b5060c0820151805161129d916006840191602090910190611ff8565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161139d99989796959493929190613580565b60405180910390a15193505050505b95945050505050565b60046113c0826107ef565b60078111156113cb57fe5b14611402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613462565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148193429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096257600080fd5b905060005b60038301548110156116725761166a8360030182815481106114a457fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114d957fe5b90600052602060002001548560050184815481106114f357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b50505050508660060185815481106115b357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505086611ca0565b600101611486565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7f90859084906136ae565b6040516104f890613244565b6116c0612051565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6005611760826107ef565b600781111561176b57fe5b146117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613472565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194d5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061181f57fe5b906000526020600020015484600301848154811061183957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186e57fe5b906000526020600020015486600501868154811061188857fe5b906000526020600020018760060187815481106118a157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d0959493929190613307565b6000604051808303818588803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611944919081019061259a565b506001016117e0565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197d9190613395565b60405180910390a15050565b6001611994836107ef565b600781111561199f57fe5b146119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613552565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613492565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa2918a9160040161326a565b60206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af291908101906126bf565b90508315611b2057611b168360090154826bffffffffffffffffffffffff16611c14565b6009840155611b42565b611b3c83600a0154826bffffffffffffffffffffffff16611c14565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c04908890889088908690613278565b60405180910390a1505050505050565b600082820183811015611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134c2565b9392505050565b600082821115611c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613562565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdb90889088908890889088906020016132ad565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0d9190613395565b60206040518083038186803b158015611d2557600080fd5b505afa158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5d919081019061255e565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134f2565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df290889088908890889088906004016132ad565b602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e44919081019061257c565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f48579160200282015b82811115611f4857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eee565b50611f54929150612071565b5090565b828054828255906000526020600020908101928215611f93579160200282015b82811115611f93578251825591602001919060010190611f78565b50611f549291506120ad565b828054828255906000526020600020908101928215611fec579160200282015b82811115611fec5782518051611fdc9184916020909101906120c7565b5091602001919060010190611fbf565b50611f54929150612134565b828054828255906000526020600020908101928215612045579160200282015b8281111561204557825180516120359184916020909101906120c7565b5091602001919060010190612018565b50611f54929150612157565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f545780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612077565b61048f91905b80821115611f5457600081556001016120b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210857805160ff1916838001178555611f93565b82800160010185558215611f935791820182811115611f93578251825591602001919060010190611f78565b61048f91905b80821115611f5457600061214e828261217a565b5060010161213a565b61048f91905b80821115611f54576000612171828261217a565b5060010161215d565b50805460018160011615610100020316600290046000825580601f106121a057506121be565b601f0160209004906000526020600020908101906121be91906120ad565b50565b803561173381613845565b600082601f8301126121dd57600080fd5b81356121f06121eb826136e3565b6136bc565b9150818183526020840193506020810190508385602084028201111561221557600080fd5b60005b83811015612241578161222b88826121c1565b8452506020928301929190910190600101612218565b5050505092915050565b600082601f83011261225c57600080fd5b813561226a6121eb826136e3565b81815260209384019390925082018360005b83811015612241578135860161229288826123a1565b845250602092830192919091019060010161227c565b600082601f8301126122b957600080fd5b81356122c76121eb826136e3565b81815260209384019390925082018360005b8381101561224157813586016122ef88826123a1565b84525060209283019291909101906001016122d9565b600082601f83011261231657600080fd5b81356123246121eb826136e3565b9150818183526020840193506020810190508385602084028201111561234957600080fd5b60005b83811015612241578161235f888261238b565b845250602092830192919091019060010161234c565b803561173381613859565b805161173381613859565b803561173381613862565b805161173381613862565b600082601f8301126123b257600080fd5b81356123c06121eb82613704565b915080825260208301602083018583830111156123dc57600080fd5b6123e78382846137db565b50505092915050565b600082601f83011261240157600080fd5b815161240f6121eb82613704565b9150808252602083016020830185838301111561242b57600080fd5b6123e78382846137e7565b80356117338161386b565b805161173381613874565b60006020828403121561245e57600080fd5b600061246a84846121c1565b949350505050565b600080600080600060a0868803121561248a57600080fd5b853567ffffffffffffffff8111156124a157600080fd5b6124ad888289016121cc565b955050602086013567ffffffffffffffff8111156124ca57600080fd5b6124d688828901612305565b945050604086013567ffffffffffffffff8111156124f357600080fd5b6124ff888289016122a8565b935050606086013567ffffffffffffffff81111561251c57600080fd5b6125288882890161224b565b925050608086013567ffffffffffffffff81111561254557600080fd5b612551888289016123a1565b9150509295509295909350565b60006020828403121561257057600080fd5b600061246a8484612380565b60006020828403121561258e57600080fd5b600061246a8484612396565b6000602082840312156125ac57600080fd5b815167ffffffffffffffff8111156125c357600080fd5b61246a848285016123f0565b6000602082840312156125e157600080fd5b600061246a848461238b565b6000806040838503121561260057600080fd5b600061260c858561238b565b925050602061261d858286016121c1565b9150509250929050565b6000806040838503121561263a57600080fd5b6000612646858561238b565b925050602061261d85828601612375565b600080600080600060a0868803121561266f57600080fd5b600061267b888861238b565b955050602061268c88828901612375565b945050604061269d88828901612436565b93505060606126ae8882890161238b565b92505060806125518882890161238b565b6000602082840312156126d157600080fd5b600061246a8484612441565b60006126e98383612718565b505060200190565b6000611c5383836128ba565b60006126e983836128a0565b612712816137b3565b82525050565b61271281613769565b600061272c8261375c565b6127368185613760565b93506127418361374a565b8060005b8381101561276f57815161275988826126dd565b97506127648361374a565b925050600101612745565b509495945050505050565b60006127858261375c565b61278f8185613760565b9350836020820285016127a18561374a565b8060005b858110156127db57848403895281516127be85826126f1565b94506127c98361374a565b60209a909a01999250506001016127a5565b5091979650505050505050565b60006127f38261375c565b6127fd8185613760565b93508360208202850161280f8561374a565b8060005b858110156127db578484038952815161282c85826126f1565b94506128378361374a565b60209a909a0199925050600101612813565b60006128548261375c565b61285e8185613760565b93506128698361374a565b8060005b8381101561276f57815161288188826126fd565b975061288c8361374a565b92505060010161286d565b61271281613774565b6127128161048f565b6127126128b58261048f565b61048f565b60006128c58261375c565b6128cf8185613760565b93506128df8185602086016137e7565b6128e881613813565b9093019392505050565b60008154600181166000811461290f576001811461295357612992565b607f60028304166129208187613760565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612992565b600282046129618187613760565b955061296c85613750565b60005b8281101561298b5781548882015260019091019060200161296f565b8701945050505b505092915050565b612712816137ba565b612712816137c5565b60006129b9604483613760565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a3e604583613760565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ac36002836109b5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612afc602983613760565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612b5b602d83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612bba605983613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612c3f602883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612c9e601183613760565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612cd76043836109b5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612d5c6027836109b5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612dbb604483613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e40602f83613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e9f604483613760565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f24602c83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612f83603f83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612fe2602f83613760565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000613041605883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130c6603683613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613125602a83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613184601583613760565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131c18482612897565b5060208201516131d46020850182612897565b5060408201516131e760408501826131ff565b50505050565b6127128161379c565b612712816137d0565b612712816137a2565b600061321382612ab6565b915061321f82856128a9565b60208201915061322f82846128a9565b5060200192915050565b600061173382612cca565b600061173382612d4f565b6040810161325d8285612709565b611c5360208301846128a0565b6040810161325d8285612718565b608081016132868287612718565b61329360208301866128a0565b6132a06040830185612897565b6113ac60608301846131f6565b60a081016132bb8288612718565b6132c860208301876128a0565b81810360408301526132da81866128ba565b905081810360608301526132ee81856128ba565b90506132fd60808301846128a0565b9695505050505050565b60a081016133158288612718565b61332260208301876128a0565b818103604083015261333481866128f2565b905081810360608301526132ee81856128f2565b608080825281016133598187612721565b9050818103602083015261336d8186612849565b9050818103604083015261338181856127e8565b905081810360608301526132fd818461277a565b6020810161173382846128a0565b608081016133b182876128a0565b6133be60208301866128a0565b6133cb60408301856128a0565b6113ac6060830184612718565b606081016133e682866128a0565b6133f360208301856128a0565b61246a6040830184612897565b6080810161340e82876128a0565b61341b60208301866131ed565b61342860408301856128a0565b6113ac60608301846128a0565b60208101611733828461299a565b6020810161173382846129a3565b60208082528101611c5381846128ba565b60208082528101611733816129ac565b6020808252810161173381612a31565b6020808252810161173381612aef565b6020808252810161173381612b4e565b6020808252810161173381612bad565b6020808252810161173381612c32565b6020808252810161173381612c91565b6020808252810161173381612dae565b6020808252810161173381612e33565b6020808252810161173381612e92565b6020808252810161173381612f17565b6020808252810161173381612f76565b6020808252810161173381612fd5565b6020808252810161173381613034565b60208082528101611733816130b9565b6020808252810161173381613118565b6020808252810161173381613177565b6060810161173382846131b0565b610120810161358f828c6128a0565b61359c602083018b612709565b81810360408301526135ae818a612721565b905081810360608301526135c28189612849565b905081810360808301526135d681886127e8565b905081810360a08301526135ea818761277a565b90506135f960c08301866128a0565b61360660e08301856128a0565b81810361010083015261361981846128ba565b9b9a5050505050505050505050565b6101208101613637828c6128a0565b613644602083018b612718565b613651604083018a6128a0565b61365e60608301896128a0565b61366b60808301886128a0565b61367860a08301876128a0565b61368560c08301866128a0565b61369260e0830185612897565b6136a0610100830184612897565b9a9950505050505050505050565b6040810161325d82856128a0565b60405181810167ffffffffffffffff811182821017156136db57600080fd5b604052919050565b600067ffffffffffffffff8211156136fa57600080fd5b5060209081020190565b600067ffffffffffffffff82111561371b57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061173382613783565b151590565b806109b58161383b565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611733825b600061173382613769565b600061173382613779565b6000611733826137a2565b82818337506000910152565b60005b838110156138025781810151838201526020016137ea565b838111156131e75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121be57fe5b61384e81613769565b81146121be57600080fd5b61384e81613774565b61384e8161048f565b61384e8161379c565b61384e816137a256fea365627a7a72315820fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb26c6578706572696d656e74616cf564736f6c63430005100040",
      "srcmap": "60:12799:2:-;;;4811:142;8:9:-1;5:2;;;30:1;27;20:12;5:2;4811:142:2;;;;;;;;;;;;;;;;;;;;;4873:8;:39;;-1:-1:-1;;;;;4873:39:2;;;-1:-1:-1;;;;;;4873:39:2;;;;;;;;4922:24;;;;;;;;;;;60:12799;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:399;;;278:2;266:9;257:7;253:23;249:32;246:2;;;294:1;291;284:12;246:2;329:1;346:64;402:7;382:9;346:64;;;336:74;;308:108;447:2;465:64;521:7;512:6;501:9;497:22;465:64;;;455:74;;426:109;240:305;;;;;;552:91;;-1:-1;;;;;712:54;;614:24;695:76;778:117;847:24;865:5;847:24;;;840:5;837:35;827:2;;886:1;883;876:12;827:2;821:74;;;60:12799:2;;;;;;",
      "srcmap-runtime": "60:12799:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3527:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3527:43:2;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1008:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1008:69:2;;;:::i;:::-;;;;;;;;131:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;131:54:2;;;:::i;:::-;;;;;;;;10814:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10814:122:2;;;;;;;;:::i;:::-;;3631:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3631:50:2;;;;;;;;:::i;3751:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3751:122:2;;;:::i;324:75::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;324:75:2;;;:::i;9337:284::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9337:284:2;;;;;;;;:::i;:::-;;;;;;;;;;;864:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;864:63:2;;;:::i;9783:1025::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9783:1025:2;;;;;;;;:::i;:::-;;;;;;;;8622:709;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8622:709:2;;;;;;;;:::i;10942:618::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10942:618:2;;;;;;;;:::i;686:74::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;686:74:2;;;:::i;505:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;505:81:2;;;:::i;1187:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1187:33:2;;;:::i;:::-;;;;;;;;1363:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:25:2;;;:::i;4959:2133::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4959:2133:2;;;;;;;;:::i;7098:568::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7098:568:2;;;;;;;;:::i;3960:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3960:94:2;;;:::i;9627:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9627:150:2;;;;;;;;:::i;:::-;;;;;;;;1287:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1287:23:2;;;:::i;8051:565::-;;;;;;;;;:::i;3527:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1008:69::-;1068:6;1008:69;;:::o;131:54::-;;;;;;;;;;;;;;;;;;;:::o;10814:122::-;10887:42;10897:10;10909;10921:7;10887:9;:42::i;:::-;10814:122;;:::o;3631:50::-;;;;;;;;;;;;;:::o;3751:122::-;3793:80;;;;;;;;;;;;;;3751:122;:::o;324:75::-;383:13;324:75;:::o;9337:284::-;9395:24;9421:20;9443:26;9471:24;9507:18;9528:9;:21;9538:10;9528:21;;;;;;;;;;;9507:42;;9567:1;:9;;9578:1;:8;;9588:1;:12;;9602:1;:11;;9559:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9337:284;;;;;:::o;864:63::-;923:1;864:63;:::o;9783:1025::-;9836:13;9886:10;9869:13;;:27;;:45;;;;;9913:1;9900:10;:14;9869:45;9861:99;;;;;;;;;;;;;;;;;;;;;;9970:25;9998:21;;;:9;:21;;;;;10033:17;;;;;;10029:773;;;10073:22;10066:29;;;;;10029:773;10132:8;:19;;;10116:12;:35;10112:690;;10174:21;10167:28;;;;;10112:690;10232:8;:17;;;10216:12;:33;10212:590;;10272:20;10265:27;;;;;10212:590;10334:8;:21;;;10313:8;:17;;;:42;;:79;;;;10379:13;:11;:13::i;:::-;10359:8;:17;;;:33;10313:79;10309:493;;;10415:22;10408:29;;;;;10309:493;10458:12;;;;10454:348;;10498:23;10491:30;;;;;10454:348;10542:17;;;;;;;;;10538:264;;;10582:22;10575:29;;;;;10538:264;10651:12;;;;10665:8;;:23;;;;;;;;10644:45;;10651:12;10665:8;;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;10665:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10665:23:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10665:23:2;;;;;;;;;10644:6;:45::i;:::-;10625:15;:64;10621:181;;10712:21;10705:28;;;;;10621:181;10771:20;10764:27;;;9783:1025;;;;:::o;8622:709::-;8672:19;8694:17;8700:10;8694:5;:17::i;:::-;8672:39;-1:-1:-1;8738:22:2;8729:5;:31;;;;;;;;;;8721:98;;;;;;;;;;;;;;8830:25;8858:21;;;:9;:21;;;;;8961:19;:17;:19::i;:::-;8897:3;;;8915:17;;;;8897:3;;;;;:17;;8915;;;;8934:23;;8941:12;;8934:6;:23::i;:::-;8897:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8897:61:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8897:61:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8897:61:2;;;;;;;;;:83;;;8889:143;;;;;;;;;;;;;;9043:17;;;:24;;;;9063:4;9043:24;;;:17;9077:204;9098:16;;;:23;9094:27;;9077:204;;;9142:8;;9169:16;;;:19;;9142:8;;;;;:26;;9169:16;9186:1;;9169:19;;;;;;;;;;;;;;;;9190:15;;;:18;;9169:19;;;;;9206:1;;9190:18;;;;;;;;;;;;;;9210:8;:19;;9230:1;9210:22;;;;;;;;;;;;;;;9234:8;:18;;9253:1;9234:21;;;;;;;;;;;;;;;9257:8;:12;;;9142:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9142:128:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9123:3:2;;;;;-1:-1:-1;9077:204:2;;-1:-1:-1;9077:204:2;;;9296:28;9313:10;9296:28;;;;;;;;;;;;;;;8622:709;;;:::o;10942:618::-;11044:23;3793:80;;;;;;;;;;;;;;;;11124:4;;;;;;;;;;;;;;;;;;11108:22;11132:12;:10;:12::i;:::-;11154:4;11080:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11080:80:2;;;11070:91;;;;;;11044:117;;11171:18;4002:52;;;;;;;;;;;;;;;11202:48;;11230:10;;11242:7;;11202:48;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11202:48:2;;;11192:59;;;;;;11171:80;;11261:14;11317:15;11334:10;11288:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11288:57:2;;;11278:68;;;;;;11261:85;;11356:17;11376:26;11386:6;11394:1;11397;11400;11376:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11376:26:2;;;;;;-1:-1:-1;;11420:23:2;;;11412:83;;;;;;;;;;;;;;11512:41;11522:9;11533:10;11545:7;11512:9;:41::i;:::-;11505:48;;;;10942:618;;;;;:::o;686:74::-;755:2;686:74;:::o;505:81::-;570:13;505:81;:::o;1187:33::-;;;;;;:::o;1363:25::-;;;;:::o;4959:2133::-;5121:4;5202:19;:17;:19::i;:::-;5145:3;;;;;;:17;;5163:10;;5175:23;;5182:12;;5175:6;:23::i;:::-;5145:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5145:54:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5145:54:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5145:54:2;;;;;;;;;:76;;;5137:152;;;;;;;;;;;;;;5325:6;:13;5307:7;:14;:31;:70;;;;;5360:10;:17;5342:7;:14;:35;5307:70;:108;;;;;5399:9;:16;5381:7;:14;:34;5307:108;5299:189;;;;;;;;;;;;;;5506:14;;5498:76;;;;;;;;;;;;;;5610:23;:21;:23::i;:::-;5592:7;:14;:41;;5584:94;;;;;;;;;;;;;;5731:10;5689:21;5713:29;;;:17;:29;;;;;;5756:21;;5752:450;;5791:42;5836:23;5842:16;5836:5;:23::i;:::-;5791:68;-1:-1:-1;5911:20:2;5879:28;:52;;;;;;;;;;5871:153;;;;;;;;;;;;;;6076:21;6044:28;:53;;;;;;;;;;6036:155;;;;;;;;;;;;;;5752:450;;6212:15;6230:35;6237:12;6251:13;:11;:13::i;6230:35::-;6212:53;;6275:13;6291:34;6298:10;6310:14;:12;:14::i;6291:34::-;6336:13;:15;;;;;;6275:50;-1:-1:-1;6361:27:2;;:::i;:::-;6391:413;;;;;;;;6418:13;;6391:413;;;;6455:10;6391:413;;;;;;6484:1;6391:413;;;;6508:7;6391:413;;;;6537:6;6391:413;;;;6569:10;6391:413;;;;6604:9;6391:413;;;;6639:10;6391:413;;;;6673:8;6391:413;;;;6705:1;6391:413;;;;6734:1;6391:413;;;;6759:5;6391:413;;;;;;6788:5;6391:413;;;;;6361:443;;6843:11;6815:9;:25;6825:11;:14;;;6815:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6815:39:2;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6815:39:2;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6815:39:2;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6906:11;:14;;;6864:17;:39;6882:11;:20;;;6864:39;;;;;;;;;;;;;;;:56;;;;6936:118;6952:11;:14;;;6968:10;6980:7;6989:6;6997:10;7009:9;7020:10;7032:8;7042:11;6936:118;;;;;;;;;;;;;;;;;;;;;;;7071:14;;-1:-1:-1;;;;4959:2133:2;;;;;;;;:::o;7098:568::-;7176:23;7155:17;7161:10;7155:5;:17::i;:::-;:44;;;;;;;;;7147:125;;;;;;;;;;;;;;7282:25;7310:21;;;:9;:21;;;;;;;;7376:8;;:16;;;;;;;7310:21;;7282:25;7352:41;;7359:15;;7376:8;;;;;:14;;:16;;;;;7310:21;;7376:16;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;7352:41:2;7341:52;-1:-1:-1;7408:6:2;7403:183;7424:16;;;:23;7420:27;;7403:183;;;7468:107;7483:8;:16;;7500:1;7483:19;;;;;;;;;;;;;;;;;;7504:15;;;:18;;7483:19;;;;;7520:1;;7504:18;;;;;;;;;;;;;;7524:8;:19;;7544:1;7524:22;;;;;;;;;;;;;;;;;;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7524:22;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7548:8;:18;;7567:1;7548:21;;;;;;;;;;;;;;;;;;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7548:21;7468:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7571:3;7468:14;:107::i;:::-;7449:3;;7403:183;;;-1:-1:-1;7595:12:2;;;:18;;;7628:31;;;;;;7643:10;;7610:3;;7628:31;;3960:94;4002:52;;;;;;9627:150;9700:14;;:::i;:::-;-1:-1:-1;9733:21:2;;;;:9;:21;;;;;;;;:37;;;;;:30;;:37;;;;;;9726:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9627:150;;;;;:::o;1287:23::-;;;;;;:::o;8051:565::-;8139:20;8118:17;8124:10;8118:5;:17::i;:::-;:41;;;;;;;;;8110:123;;;;;;;;;;;;;;8243:25;8271:21;;;:9;:21;;;;;8302:17;;;:24;;;;;;;;8271:21;8336:231;8357:16;;;:23;8353:27;;8336:231;;;8401:8;;8435:15;;;:18;;8401:8;;;;;:27;;8435:15;8451:1;;8435:18;;;;;;;;;;;;;;8455:8;:16;;8472:1;8455:19;;;;;;;;;;;;;;;;;;8476:15;;;:18;;8455:19;;;;;8492:1;;8476:18;;;;;;;;;;;;;;8496:8;:19;;8516:1;8496:22;;;;;;;;;;;;;;;8520:8;:18;;8539:1;8520:21;;;;;;;;;;;;;;;8543:8;:12;;;8401:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8401:155:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8401:155:2;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8401:155:2;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;8401:155:2;;;;;;;;;-1:-1:-1;8382:3:2;;8336:231;;;;8581:28;8598:10;8581:28;;;;;;;;;;;;;;;8051:565;;:::o;11566:819::-;11679:20;11658:17;11664:10;11658:5;:17::i;:::-;:41;;;;;;;;;11650:96;;;;;;;;;;;;;;11756:25;11784:21;;;:9;:21;;;;;;;;11841:24;;;;;:17;;;:24;;;;;;11883:16;;;;:25;11875:83;;;;;;;;;;;;;;11983:3;;12008:19;;;;11983:45;;;;;11968:12;;11983:3;;;:17;;:45;;12001:5;;11983:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11983:45:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11983:45:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11983:45:2;;;;;;;;;11968:60;;12043:7;12039:181;;;12086:32;12093:8;:17;;;12112:5;12086:32;;:6;:32::i;:::-;12066:17;;;:52;12039:181;;;12173:36;12180:8;:21;;;12203:5;12173:36;;:6;:36::i;:::-;12149:21;;;:60;12039:181;12230:23;;12249:4;12230:23;;;;;12263:25;;12230:23;12263:25;;;;;12298:21;;;;;;;;;;12335:43;;;;;;12344:5;;12351:10;;12263:25;;12298:21;;12335:43;;;;;;;;;;11566:819;;;;;;:::o;12391:162::-;12452:4;12477:5;;;12500:6;;;;12492:36;;;;;;;;;;;;;;12545:1;12391:162;-1:-1:-1;;;12391:162:2:o;12559:146::-;12620:4;12649:1;12644;:6;;12636:40;;;;;;;;;;;;;;-1:-1:-1;12693:5:2;;;12559:146::o;12711:::-;12816:9;12711:146;:::o;7672:373::-;7806:8;;7844:47;;7806:8;;;;;:27;;7844:47;;7855:6;;7863:5;;7870:9;;7881:4;;7887:3;;7844:47;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7844:47:2;;;7834:58;;;;;;7806:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7806:87:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7806:87:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7806:87:2;;;;;;;;;7805:88;7797:169;;;;;;;;;;;;;;7976:8;;:62;;;;;:8;;;;;:25;;:62;;8002:6;;8010:5;;8017:9;;8028:4;;8034:3;;7976:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7976:62:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7976:62:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7976:62:2;;;;;;;;;;7672:373;;;;;:::o;60:12799::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;60:12799:2;;;-1:-1:-1;60:12799:2;:::i;:::-;;;;;;;;;-1:-1:-1;60:12799:2;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1609:696;;1732:3;1725:4;1717:6;1713:17;1709:27;1699:2;;1750:1;1747;1740:12;1699:2;1787:6;1774:20;1809:86;1824:70;1887:6;1824:70;;1809:86;1923:21;;;1967:4;1955:17;;;;1800:95;;-1:-1;1980:14;;1955:17;2075:1;2060:239;2085:6;2082:1;2079:13;2060:239;;;2168:3;2155:17;2147:6;2143:30;2192:43;2231:3;2219:10;2192:43;;;2180:56;;-1:-1;2259:4;2250:14;;;;2278;;;;;2107:1;2100:9;2060:239;;2331:707;;2448:3;2441:4;2433:6;2429:17;2425:27;2415:2;;2466:1;2463;2456:12;2415:2;2503:6;2490:20;2525:80;2540:64;2597:6;2540:64;;2525:80;2516:89;;2622:5;2647:6;2640:5;2633:21;2677:4;2669:6;2665:17;2655:27;;2699:4;2694:3;2690:14;2683:21;;2752:6;2799:3;2791:4;2783:6;2779:17;2774:3;2770:27;2767:36;2764:2;;;2816:1;2813;2806:12;2764:2;2841:1;2826:206;2851:6;2848:1;2845:13;2826:206;;;2909:3;2931:37;2964:3;2952:10;2931:37;;;2919:50;;-1:-1;2992:4;2983:14;;;;3011;;;;;2873:1;2866:9;2826:206;;3046:124;3110:20;;3135:30;3110:20;3135:30;;3177:128;3252:13;;3270:30;3252:13;3270:30;;3312:130;3379:20;;3404:33;3379:20;3404:33;;3449:134;3527:13;;3545:33;3527:13;3545:33;;3591:432;;3688:3;3681:4;3673:6;3669:17;3665:27;3655:2;;3706:1;3703;3696:12;3655:2;3743:6;3730:20;3765:60;3780:44;3817:6;3780:44;;3765:60;3756:69;;3845:6;3838:5;3831:21;3881:4;3873:6;3869:17;3914:4;3907:5;3903:16;3949:3;3940:6;3935:3;3931:16;3928:25;3925:2;;;3966:1;3963;3956:12;3925:2;3976:41;4010:6;4005:3;4000;3976:41;;;3648:375;;;;;;;;4032:442;;4144:3;4137:4;4129:6;4125:17;4121:27;4111:2;;4162:1;4159;4152:12;4111:2;4192:6;4186:13;4214:64;4229:48;4270:6;4229:48;;4214:64;4205:73;;4298:6;4291:5;4284:21;4334:4;4326:6;4322:17;4367:4;4360:5;4356:16;4402:3;4393:6;4388:3;4384:16;4381:25;4378:2;;;4419:1;4416;4409:12;4378:2;4429:39;4461:6;4456:3;4451;4429:39;;5654:126;5719:20;;5744:31;5719:20;5744:31;;5787:132;5864:13;;5882:32;5864:13;5882:32;;5926:241;;6030:2;6018:9;6009:7;6005:23;6001:32;5998:2;;;6046:1;6043;6036:12;5998:2;6081:1;6098:53;6143:7;6123:9;6098:53;;;6088:63;5992:175;-1:-1;;;;5992:175;6174:1415;;;;;;6467:3;6455:9;6446:7;6442:23;6438:33;6435:2;;;6484:1;6481;6474:12;6435:2;6519:31;;6570:18;6559:30;;6556:2;;;6602:1;6599;6592:12;6556:2;6622:78;6692:7;6683:6;6672:9;6668:22;6622:78;;;6612:88;;6498:208;6765:2;6754:9;6750:18;6737:32;6789:18;6781:6;6778:30;6775:2;;;6821:1;6818;6811:12;6775:2;6841:78;6911:7;6902:6;6891:9;6887:22;6841:78;;;6831:88;;6716:209;6984:2;6973:9;6969:18;6956:32;7008:18;7000:6;6997:30;6994:2;;;7040:1;7037;7030:12;6994:2;7060:84;7136:7;7127:6;7116:9;7112:22;7060:84;;;7050:94;;6935:215;7209:2;7198:9;7194:18;7181:32;7233:18;7225:6;7222:30;7219:2;;;7265:1;7262;7255:12;7219:2;7285:83;7360:7;7351:6;7340:9;7336:22;7285:83;;;7275:93;;7160:214;7433:3;7422:9;7418:19;7405:33;7458:18;7450:6;7447:30;7444:2;;;7490:1;7487;7480:12;7444:2;7510:63;7565:7;7556:6;7545:9;7541:22;7510:63;;;7500:73;;7384:195;6429:1160;;;;;;;;;7596:257;;7708:2;7696:9;7687:7;7683:23;7679:32;7676:2;;;7724:1;7721;7714:12;7676:2;7759:1;7776:61;7829:7;7809:9;7776:61;;7860:263;;7975:2;7963:9;7954:7;7950:23;7946:32;7943:2;;;7991:1;7988;7981:12;7943:2;8026:1;8043:64;8099:7;8079:9;8043:64;;8130:360;;8254:2;8242:9;8233:7;8229:23;8225:32;8222:2;;;8270:1;8267;8260:12;8222:2;8305:24;;8349:18;8338:30;;8335:2;;;8381:1;8378;8371:12;8335:2;8401:73;8466:7;8457:6;8446:9;8442:22;8401:73;;8497:241;;8601:2;8589:9;8580:7;8576:23;8572:32;8569:2;;;8617:1;8614;8607:12;8569:2;8652:1;8669:53;8714:7;8694:9;8669:53;;9015:366;;;9136:2;9124:9;9115:7;9111:23;9107:32;9104:2;;;9152:1;9149;9142:12;9104:2;9187:1;9204:53;9249:7;9229:9;9204:53;;;9194:63;;9166:97;9294:2;9312:53;9357:7;9348:6;9337:9;9333:22;9312:53;;;9302:63;;9273:98;9098:283;;;;;;9388:360;;;9506:2;9494:9;9485:7;9481:23;9477:32;9474:2;;;9522:1;9519;9512:12;9474:2;9557:1;9574:53;9619:7;9599:9;9574:53;;;9564:63;;9536:97;9664:2;9682:50;9724:7;9715:6;9704:9;9700:22;9682:50;;9755:733;;;;;;9922:3;9910:9;9901:7;9897:23;9893:33;9890:2;;;9939:1;9936;9929:12;9890:2;9974:1;9991:53;10036:7;10016:9;9991:53;;;9981:63;;9953:97;10081:2;10099:50;10141:7;10132:6;10121:9;10117:22;10099:50;;;10089:60;;10060:95;10186:2;10204:51;10247:7;10238:6;10227:9;10223:22;10204:51;;;10194:61;;10165:96;10292:2;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;;;10300:63;;10271:98;10400:3;10419:53;10464:7;10455:6;10444:9;10440:22;10419:53;;10495:261;;10609:2;10597:9;10588:7;10584:23;10580:32;10577:2;;;10625:1;10622;10615:12;10577:2;10660:1;10677:63;10732:7;10712:9;10677:63;;10764:173;;10851:46;10893:3;10885:6;10851:46;;;-1:-1;;10926:4;10917:14;;10844:93;10946:177;;11057:60;11113:3;11105:6;11057:60;;11322:173;;11409:46;11451:3;11443:6;11409:46;;11503:142;11594:45;11633:5;11594:45;;;11589:3;11582:58;11576:69;;;11652:103;11725:24;11743:5;11725:24;;11913:690;;12058:54;12106:5;12058:54;;;12125:86;12204:6;12199:3;12125:86;;;12118:93;;12232:56;12282:5;12232:56;;;12308:7;12336:1;12321:260;12346:6;12343:1;12340:13;12321:260;;;12413:6;12407:13;12434:63;12493:3;12478:13;12434:63;;;12427:70;;12514:60;12567:6;12514:60;;;12504:70;-1:-1;;12368:1;12361:9;12321:260;;;-1:-1;12594:3;;12037:566;-1:-1;;;;;12037:566;12638:888;;12793:59;12846:5;12793:59;;;12865:91;12949:6;12944:3;12865:91;;;12858:98;;12979:3;13021:4;13013:6;13009:17;13004:3;13000:27;13048:61;13103:5;13048:61;;;13129:7;13157:1;13142:345;13167:6;13164:1;13161:13;13142:345;;;13229:9;13223:4;13219:20;13214:3;13207:33;13274:6;13268:13;13296:74;13365:4;13350:13;13296:74;;;13288:82;;13387:65;13445:6;13387:65;;;13475:4;13466:14;;;;;13377:75;-1:-1;;13189:1;13182:9;13142:345;;;-1:-1;13500:4;;12772:754;-1:-1;;;;;;;12772:754;13563:896;;13720:60;13774:5;13720:60;;;13793:92;13878:6;13873:3;13793:92;;;13786:99;;13908:3;13950:4;13942:6;13938:17;13933:3;13929:27;13977:62;14033:5;13977:62;;;14059:7;14087:1;14072:348;14097:6;14094:1;14091:13;14072:348;;;14159:9;14153:4;14149:20;14144:3;14137:33;14204:6;14198:13;14226:76;14297:4;14282:13;14226:76;;;14218:84;;14319:66;14378:6;14319:66;;;14408:4;14399:14;;;;;14309:76;-1:-1;;14119:1;14112:9;14072:348;;14498:690;;14643:54;14691:5;14643:54;;;14710:86;14789:6;14784:3;14710:86;;;14703:93;;14817:56;14867:5;14817:56;;;14893:7;14921:1;14906:260;14931:6;14928:1;14925:13;14906:260;;;14998:6;14992:13;15019:63;15078:3;15063:13;15019:63;;;15012:70;;15099:60;15152:6;15099:60;;;15089:70;-1:-1;;14953:1;14946:9;14906:260;;15196:94;15263:21;15278:5;15263:21;;15408:113;15491:24;15509:5;15491:24;;15528:152;15629:45;15649:24;15667:5;15649:24;;;15629:45;;15687:343;;15797:38;15829:5;15797:38;;;15847:70;15910:6;15905:3;15847:70;;;15840:77;;15922:52;15967:6;15962:3;15955:4;15948:5;15944:16;15922:52;;;15995:29;16017:6;15995:29;;;15986:39;;;;15777:253;-1:-1;;;15777:253;16382:818;;16499:5;16493:12;16533:1;16522:9;16518:17;16546:1;16541:247;;;;16799:1;16794:400;;;;16511:683;;16541:247;16619:4;16615:1;16604:9;16600:17;16596:28;16638:70;16701:6;16696:3;16638:70;;;16742:9;16727:25;;16715:38;;16631:77;-1:-1;;16776:4;16767:14;;;-1:-1;16541:247;;16794:400;16863:1;16852:9;16848:17;16879:70;16942:6;16937:3;16879:70;;;16872:77;;16971:37;17002:5;16971:37;;;17024:1;17032:130;17046:6;17043:1;17040:13;17032:130;;;17105:14;;17092:11;;;17085:35;17152:1;17139:15;;;;17068:4;17061:12;17032:130;;;17176:11;;;-1:-1;;;16511:683;;16469:731;;;;;;17208:178;17317:63;17374:5;17317:63;;17568:156;17666:52;17712:5;17666:52;;19614:442;;19774:67;19838:2;19833:3;19774:67;;;19874:34;19854:55;;19943:34;19938:2;19929:12;;19922:56;20012:6;20007:2;19998:12;;19991:28;20047:2;20038:12;;19760:296;-1:-1;;19760:296;20065:443;;20225:67;20289:2;20284:3;20225:67;;;20325:34;20305:55;;20394:34;20389:2;20380:12;;20373:56;20463:7;20458:2;20449:12;;20442:29;20499:2;20490:12;;20211:297;-1:-1;;20211:297;20517:398;;20695:84;20777:1;20772:3;20695:84;;;20812:66;20792:87;;20907:1;20898:11;;20681:234;-1:-1;;20681:234;20924:378;;21084:67;21148:2;21143:3;21084:67;;;21184:34;21164:55;;21253:11;21248:2;21239:12;;21232:33;21293:2;21284:12;;21070:232;-1:-1;;21070:232;21311:382;;21471:67;21535:2;21530:3;21471:67;;;21571:34;21551:55;;21640:15;21635:2;21626:12;;21619:37;21684:2;21675:12;;21457:236;-1:-1;;21457:236;21702:463;;21862:67;21926:2;21921:3;21862:67;;;21962:34;21942:55;;22031:34;22026:2;22017:12;;22010:56;22100:27;22095:2;22086:12;;22079:49;22156:2;22147:12;;21848:317;-1:-1;;21848:317;22174:377;;22334:67;22398:2;22393:3;22334:67;;;22434:34;22414:55;;22503:10;22498:2;22489:12;;22482:32;22542:2;22533:12;;22320:231;-1:-1;;22320:231;22560:317;;22720:67;22784:2;22779:3;22720:67;;;22820:19;22800:40;;22868:2;22859:12;;22706:171;-1:-1;;22706:171;22886:477;;23064:85;23146:2;23141:3;23064:85;;;23182:34;23162:55;;23251:34;23246:2;23237:12;;23230:56;23320:5;23315:2;23306:12;;23299:27;23354:2;23345:12;;23050:313;-1:-1;;23050:313;23372:412;;23550:85;23632:2;23627:3;23550:85;;;23668:34;23648:55;;23737:9;23732:2;23723:12;;23716:31;23775:2;23766:12;;23536:248;-1:-1;;23536:248;23793:442;;23953:67;24017:2;24012:3;23953:67;;;24053:34;24033:55;;24122:34;24117:2;24108:12;;24101:56;24191:6;24186:2;24177:12;;24170:28;24226:2;24217:12;;23939:296;-1:-1;;23939:296;24244:384;;24404:67;24468:2;24463:3;24404:67;;;24504:34;24484:55;;24573:17;24568:2;24559:12;;24552:39;24619:2;24610:12;;24390:238;-1:-1;;24390:238;24637:442;;24797:67;24861:2;24856:3;24797:67;;;24897:34;24877:55;;24966:34;24961:2;24952:12;;24945:56;25035:6;25030:2;25021:12;;25014:28;25070:2;25061:12;;24783:296;-1:-1;;24783:296;25088:381;;25248:67;25312:2;25307:3;25248:67;;;25348:34;25328:55;;25417:14;25412:2;25403:12;;25396:36;25460:2;25451:12;;25234:235;-1:-1;;25234:235;25478:400;;25638:67;25702:2;25697:3;25638:67;;;25738:34;25718:55;;25807:33;25802:2;25793:12;;25786:55;25869:2;25860:12;;25624:254;-1:-1;;25624:254;25887:384;;26047:67;26111:2;26106:3;26047:67;;;26147:34;26127:55;;26216:17;26211:2;26202:12;;26195:39;26262:2;26253:12;;26033:238;-1:-1;;26033:238;26280:462;;26440:67;26504:2;26499:3;26440:67;;;26540:34;26520:55;;26609:34;26604:2;26595:12;;26588:56;26678:26;26673:2;26664:12;;26657:48;26733:2;26724:12;;26426:316;-1:-1;;26426:316;26751:391;;26911:67;26975:2;26970:3;26911:67;;;27011:34;26991:55;;27080:24;27075:2;27066:12;;27059:46;27133:2;27124:12;;26897:245;-1:-1;;26897:245;27151:379;;27311:67;27375:2;27370:3;27311:67;;;27411:34;27391:55;;27480:12;27475:2;27466:12;;27459:34;27521:2;27512:12;;27297:233;-1:-1;;27297:233;27539:321;;27699:67;27763:2;27758:3;27699:67;;;27799:23;27779:44;;27851:2;27842:12;;27685:175;-1:-1;;27685:175;27935:622;28146:23;;28076:4;28067:14;;;28175:57;28071:3;28146:23;28175:57;;;28096:142;28314:4;28307:5;28303:16;28297:23;28326:57;28377:4;28372:3;28368:14;28354:12;28326:57;;;28248:141;28463:4;28456:5;28452:16;28446:23;28475:61;28530:4;28525:3;28521:14;28507:12;28475:61;;;28399:143;28049:508;;;;28794:107;28873:22;28889:5;28873:22;;28908:124;28990:36;29020:5;28990:36;;29039:100;29110:23;29127:5;29110:23;;29146:650;;29401:148;29545:3;29401:148;;;29394:155;;29560:75;29631:3;29622:6;29560:75;;;29657:2;29652:3;29648:12;29641:19;;29671:75;29742:3;29733:6;29671:75;;;-1:-1;29768:2;29759:12;;29382:414;-1:-1;;29382:414;29803:372;;30002:148;30146:3;30002:148;;30182:372;;30381:148;30525:3;30381:148;;30561:340;30715:2;30700:18;;30729:79;30704:9;30781:6;30729:79;;;30819:72;30887:2;30876:9;30872:18;30863:6;30819:72;;30908:324;31054:2;31039:18;;31068:71;31043:9;31112:6;31068:71;;31239:533;31434:3;31419:19;;31449:71;31423:9;31493:6;31449:71;;;31531:72;31599:2;31588:9;31584:18;31575:6;31531:72;;;31614:66;31676:2;31665:9;31661:18;31652:6;31614:66;;;31691:71;31758:2;31747:9;31743:18;31734:6;31691:71;;31779:831;32047:3;32032:19;;32062:71;32036:9;32106:6;32062:71;;;32144:72;32212:2;32201:9;32197:18;32188:6;32144:72;;;32264:9;32258:4;32254:20;32249:2;32238:9;32234:18;32227:48;32289:78;32362:4;32353:6;32289:78;;;32281:86;;32415:9;32409:4;32405:20;32400:2;32389:9;32385:18;32378:48;32440:76;32511:4;32502:6;32440:76;;;32432:84;;32527:73;32595:3;32584:9;32580:19;32571:6;32527:73;;;32018:592;;;;;;;;;32617:819;32879:3;32864:19;;32894:71;32868:9;32938:6;32894:71;;;32976:72;33044:2;33033:9;33029:18;33020:6;32976:72;;;33096:9;33090:4;33086:20;33081:2;33070:9;33066:18;33059:48;33121:75;33191:4;33182:6;33121:75;;;33113:83;;33244:9;33238:4;33234:20;33229:2;33218:9;33214:18;33207:48;33269:73;33337:4;33328:6;33269:73;;33443:1183;33867:3;33882:47;;;33852:19;;33943:108;33852:19;34037:6;33943:108;;;33935:116;;34099:9;34093:4;34089:20;34084:2;34073:9;34069:18;34062:48;34124:108;34227:4;34218:6;34124:108;;;34116:116;;34280:9;34274:4;34270:20;34265:2;34254:9;34250:18;34243:48;34305:120;34420:4;34411:6;34305:120;;;34297:128;;34473:9;34467:4;34463:20;34458:2;34447:9;34443:18;34436:48;34498:118;34611:4;34602:6;34498:118;;34633:213;34751:2;34736:18;;34765:71;34740:9;34809:6;34765:71;;34853:547;35055:3;35040:19;;35070:71;35044:9;35114:6;35070:71;;;35152:72;35220:2;35209:9;35205:18;35196:6;35152:72;;;35235;35303:2;35292:9;35288:18;35279:6;35235:72;;;35318;35386:2;35375:9;35371:18;35362:6;35318:72;;35407:423;35575:2;35560:18;;35589:71;35564:9;35633:6;35589:71;;;35671:72;35739:2;35728:9;35724:18;35715:6;35671:72;;;35754:66;35816:2;35805:9;35801:18;35792:6;35754:66;;35837:539;36035:3;36020:19;;36050:71;36024:9;36094:6;36050:71;;;36132:68;36196:2;36185:9;36181:18;36172:6;36132:68;;;36211:72;36279:2;36268:9;36264:18;36255:6;36211:72;;;36294;36362:2;36351:9;36347:18;36338:6;36294:72;;36383:265;36527:2;36512:18;;36541:97;36516:9;36611:6;36541:97;;36917:243;37050:2;37035:18;;37064:86;37039:9;37123:6;37064:86;;37167:293;37301:2;37315:47;;;37286:18;;37376:74;37286:18;37436:6;37376:74;;37467:407;37658:2;37672:47;;;37643:18;;37733:131;37643:18;37733:131;;37881:407;38072:2;38086:47;;;38057:18;;38147:131;38057:18;38147:131;;38295:407;38486:2;38500:47;;;38471:18;;38561:131;38471:18;38561:131;;38709:407;38900:2;38914:47;;;38885:18;;38975:131;38885:18;38975:131;;39123:407;39314:2;39328:47;;;39299:18;;39389:131;39299:18;39389:131;;39537:407;39728:2;39742:47;;;39713:18;;39803:131;39713:18;39803:131;;39951:407;40142:2;40156:47;;;40127:18;;40217:131;40127:18;40217:131;;40365:407;40556:2;40570:47;;;40541:18;;40631:131;40541:18;40631:131;;40779:407;40970:2;40984:47;;;40955:18;;41045:131;40955:18;41045:131;;41193:407;41384:2;41398:47;;;41369:18;;41459:131;41369:18;41459:131;;41607:407;41798:2;41812:47;;;41783:18;;41873:131;41783:18;41873:131;;42021:407;42212:2;42226:47;;;42197:18;;42287:131;42197:18;42287:131;;42435:407;42626:2;42640:47;;;42611:18;;42701:131;42611:18;42701:131;;42849:407;43040:2;43054:47;;;43025:18;;43115:131;43025:18;43115:131;;43263:407;43454:2;43468:47;;;43439:18;;43529:131;43439:18;43529:131;;43677:407;43868:2;43882:47;;;43853:18;;43943:131;43853:18;43943:131;;44091:407;44282:2;44296:47;;;44267:18;;44357:131;44267:18;44357:131;;44505:309;44671:2;44656:18;;44685:119;44660:9;44777:6;44685:119;;45041:1847;45633:3;45618:19;;45648:71;45622:9;45692:6;45648:71;;;45730:80;45806:2;45795:9;45791:18;45782:6;45730:80;;;45858:9;45852:4;45848:20;45843:2;45832:9;45828:18;45821:48;45883:108;45986:4;45977:6;45883:108;;;45875:116;;46039:9;46033:4;46029:20;46024:2;46013:9;46009:18;46002:48;46064:108;46167:4;46158:6;46064:108;;;46056:116;;46221:9;46215:4;46211:20;46205:3;46194:9;46190:19;46183:49;46246:120;46361:4;46352:6;46246:120;;;46238:128;;46415:9;46409:4;46405:20;46399:3;46388:9;46384:19;46377:49;46440:118;46553:4;46544:6;46440:118;;;46432:126;;46569:73;46637:3;46626:9;46622:19;46613:6;46569:73;;;46653;46721:3;46710:9;46706:19;46697:6;46653:73;;;46775:9;46769:4;46765:20;46759:3;46748:9;46744:19;46737:49;46800:78;46873:4;46864:6;46800:78;;;46792:86;45604:1284;-1:-1;;;;;;;;;;;45604:1284;46895:1083;47225:3;47210:19;;47240:71;47214:9;47284:6;47240:71;;;47322:72;47390:2;47379:9;47375:18;47366:6;47322:72;;;47405;47473:2;47462:9;47458:18;47449:6;47405:72;;;47488;47556:2;47545:9;47541:18;47532:6;47488:72;;;47571:73;47639:3;47628:9;47624:19;47615:6;47571:73;;;47655;47723:3;47712:9;47708:19;47699:6;47655:73;;;47739;47807:3;47796:9;47792:19;47783:6;47739:73;;;47823:67;47885:3;47874:9;47870:19;47861:6;47823:67;;;47901;47963:3;47952:9;47948:19;47939:6;47901:67;;;47196:782;;;;;;;;;;;;;47985:324;48131:2;48116:18;;48145:71;48120:9;48189:6;48145:71;;48316:256;48378:2;48372:9;48404:17;;;48479:18;48464:34;;48500:22;;;48461:62;48458:2;;;48536:1;48533;48526:12;48458:2;48552;48545:22;48356:216;;-1:-1;48356:216;48579:304;;48738:18;48730:6;48727:30;48724:2;;;48770:1;48767;48760:12;48724:2;-1:-1;48805:4;48793:17;;;48858:15;;48661:222;49834:317;;49973:18;49965:6;49962:30;49959:2;;;50005:1;50002;49995:12;49959:2;-1:-1;50136:4;50072;50049:17;;;;50068:9;50045:33;50126:15;;49896:255;51140:151;51264:4;51255:14;;51212:79;51783:157;;51877:14;;;51919:4;51906:18;;;51836:104;52112:137;52215:12;;52186:63;53677:178;53795:19;;;53844:4;53835:14;;53788:67;55255:91;;55317:24;55335:5;55317:24;;55353:85;55419:13;55412:21;;55395:43;55524:140;55603:5;55609:50;55603:5;55609:50;;55671:121;55744:42;55733:54;;55716:76;55878:81;55949:4;55938:16;;55921:38;55966:104;56038:26;56027:38;;56010:60;56077:129;;56164:37;56195:5;56213:173;;56318:63;56375:5;56318:63;;56840:140;;56934:41;56969:5;56934:41;;57230:106;;57308:23;57325:5;57308:23;;57344:145;57425:6;57420:3;57415;57402:30;-1:-1;57481:1;57463:16;;57456:27;57395:94;57498:268;57563:1;57570:101;57584:6;57581:1;57578:13;57570:101;;;57651:11;;;57645:18;57632:11;;;57625:39;57606:2;57599:10;57570:101;;;57686:6;57683:1;57680:13;57677:2;;;-1:-1;;57751:1;57733:16;;57726:27;57547:219;57855:97;57943:2;57923:14;57939:7;57919:28;;57903:49;57960:108;58046:1;58039:5;58036:12;58026:2;;58052:9;58075:117;58144:24;58162:5;58144:24;;;58137:5;58134:35;58124:2;;58183:1;58180;58173:12;58199:111;58265:21;58280:5;58265:21;;58317:117;58386:24;58404:5;58386:24;;58565:113;58632:22;58648:5;58632:22;;58685:115;58753:23;58770:5;58753:23;"
    },
    "contracts/GovernorAlpha.sol:TimelockInterface": {
      "abi": [
        {
          "constant": true,
          "inputs": [],
          "name": "GRACE_PERIOD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [],
          "name": "acceptAdmin",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "cancelTransaction",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "delay",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "executeTransaction",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "payable": true,
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "queueTransaction",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "hash",
              "type": "bytes32"
            }
          ],
          "name": "queuedTransactions",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"GRACE_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"cancelTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"queueTransaction\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"queuedTransactions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/GovernorAlpha.sol\":\"TimelockInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/GovernorAlpha.sol\":{\"keccak256\":\"0xcbe387b12636c8f54f700982180777f08cf2a51b0d90b1a172d388f91602e7a4\",\"urls\":[\"bzz-raw://d040d754dc5866f5c8ba040d74971671ba2e45df06d0378c8d437c788888f209\",\"dweb:/ipfs/QmcjEBHEG5y3bgxvch17LkiK9AJDoTonYQ3PVy14QuFutG\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/GovernorAlpha.sol:UniInterface": {
      "abi": [
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "getPriorVotes",
          "outputs": [
            {
              "internalType": "uint96",
              "name": "",
              "type": "uint96"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPriorVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/GovernorAlpha.sol\":\"UniInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/GovernorAlpha.sol\":{\"keccak256\":\"0xcbe387b12636c8f54f700982180777f08cf2a51b0d90b1a172d388f91602e7a4\",\"urls\":[\"bzz-raw://d040d754dc5866f5c8ba040d74971671ba2e45df06d0378c8d437c788888f209\",\"dweb:/ipfs/QmcjEBHEG5y3bgxvch17LkiK9AJDoTonYQ3PVy14QuFutG\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/SafeMath.sol:SafeMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158207a9f015adcfc44137b7e293d2435d47de39951384d07d2e55c76896aea05abb764736f6c63430005100032",
          "opcodes": "PUSH1 0x55 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 PUSH6 0x627A7A723158 KECCAK256 PUSH27 0x9F015ADCFC44137B7E293D2435D47DE39951384D07D2E55C76896A 0xEA SDIV 0xAB 0xB7 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ",
          "sourceMap": "721:5690:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158207a9f015adcfc44137b7e293d2435d47de39951384d07d2e55c76896aea05abb764736f6c63430005100032",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH27 0x9F015ADCFC44137B7E293D2435D47DE39951384D07D2E55C76896A 0xEA SDIV 0xAB 0xB7 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ",
          "sourceMap": "721:5690:3:-;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/SafeMath.sol\":{\"keccak256\":\"0x5082b717b4b08c7c2068666edce6f70363eeacee07777086ed8eef9353c39e2c\",\"urls\":[\"bzz-raw://02764f2c13cd5c53dd839d7554cfd6a668e45aff19e708b496896f181380cd7c\",\"dweb:/ipfs/QmcaGAZi7dQpCvmzKwzybQBYfyvFGdqHhXXXbJncTMewG7\"]}},\"version\":1}",
      "bytecode": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158207a9f015adcfc44137b7e293d2435d47de39951384d07d2e55c76896aea05abb764736f6c63430005100032",
      "bin": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158207a9f015adcfc44137b7e293d2435d47de39951384d07d2e55c76896aea05abb764736f6c63430005100032",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158207a9f015adcfc44137b7e293d2435d47de39951384d07d2e55c76896aea05abb764736f6c63430005100032",
      "srcmap": "721:5690:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "721:5690:3:-;;;;;;;;"
    },
    "contracts/Timelock.sol:Timelock": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "admin_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "delay_",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "CancelTransaction",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "ExecuteTransaction",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newAdmin",
              "type": "address"
            }
          ],
          "name": "NewAdmin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "newDelay",
              "type": "uint256"
            }
          ],
          "name": "NewDelay",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newPendingAdmin",
              "type": "address"
            }
          ],
          "name": "NewPendingAdmin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "txHash",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "QueueTransaction",
          "type": "event"
        },
        {
          "payable": true,
          "stateMutability": "payable",
          "type": "fallback"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "GRACE_PERIOD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "MAXIMUM_DELAY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "MINIMUM_DELAY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [],
          "name": "acceptAdmin",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "admin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "cancelTransaction",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "delay",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "executeTransaction",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "payable": true,
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "pendingAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "signature",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "eta",
              "type": "uint256"
            }
          ],
          "name": "queueTransaction",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "queuedTransactions",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "delay_",
              "type": "uint256"
            }
          ],
          "name": "setDelay",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "pendingAdmin_",
              "type": "address"
            }
          ],
          "name": "setPendingAdmin",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604051611c2b380380611c2b8339818101604052604081101561003357600080fd5b5080516020909101516202a30081101561007e5760405162461bcd60e51b8152600401808060200182810382526037815260200180611bbc6037913960400191505060405180910390fd5b62278d008111156100c05760405162461bcd60e51b8152600401808060200182810382526038815260200180611bf36038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b031990931692909217909155600255611ac8806100f46000396000f3fe6080604052600436106100d25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461063a578063e177246e1461064f578063f2b0653714610679578063f851a440146106b7576100d2565b80636a42b8f8146105fb5780637d645fab14610610578063b1b43ae514610625576100d2565b80633a66f901116100b05780633a66f901146102ed5780634dd18bf51461045d578063591fcdfe1461049d576100d2565b80630825f38f146100d45780630e18b6811461029a57806326782247146102af575b005b610225600480360360a08110156100ea57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101ae57600080fd5b8201836020820111156101c057600080fd5b803590602001918460018302840111640100000000831117156101e257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106cc915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025f578181015183820152602001610247565b50505050905090810190601f16801561028c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a657600080fd5b506100d2610d4a565b3480156102bb57600080fd5b506102c4610e32565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102f957600080fd5b5061044b600480360360a081101561031057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561034d57600080fd5b82018360208201111561035f57600080fd5b8035906020019184600183028401116401000000008311171561038157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184600183028401116401000000008311171561040857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e4e915050565b60408051918252519081900360200190f35b34801561046957600080fd5b506100d26004803603602081101561048057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c7565b3480156104a957600080fd5b506100d2600480360360a08110156104c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156104fd57600080fd5b82018360208201111561050f57600080fd5b8035906020019184600183028401116401000000008311171561053157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460018302840111640100000000831117156105b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611294915050565b34801561060757600080fd5b5061044b611598565b34801561061c57600080fd5b5061044b61159e565b34801561063157600080fd5b5061044b6115a5565b34801561064657600080fd5b5061044b6115ac565b34801561065b57600080fd5b506100d26004803603602081101561067257600080fd5b50356115b3565b34801561068557600080fd5b506106a36004803603602081101561069c57600080fd5b50356116f6565b604080519115158252519081900360200190f35b3480156106c357600080fd5b506102c461170b565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461073f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806117a76038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107c85781810151838201526020016107b0565b50505050905090810190601f1680156107f55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610828578181015183820152602001610810565b50505050905090810190601f1680156108555780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490995060ff1697506108fe9650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118fa603d913960400191505060405180910390fd5b82610907611727565b101561095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118496045913960600191505060405180910390fd5b610971836212750063ffffffff61172b16565b610979611727565b11156109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806118166033913960400191505060405180910390fd5b600081815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a14575083610ae9565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610ab157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a74565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b5357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b16565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610bb5576040519150601f19603f3d011682016040523d82523d6000602084013e610bba565b606091505b509150915081610c15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119dd603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c9f578181015183820152602001610c87565b50505050905090810190601f168015610ccc5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cff578181015183820152602001610ce7565b50505050905090810190601f168015610d2c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119376038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806119a76036913960400191505060405180910390fd5b610ed9600254610ecd611727565b9063ffffffff61172b16565b821015610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611a1a6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610fba578181015183820152602001610fa2565b50505050905090810190601f168015610fe75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561101a578181015183820152602001611002565b50505050905090810190601f1680156110475780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561111f578181015183820152602001611107565b50505050905090810190601f16801561114c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561117f578181015183820152602001611167565b50505050905090810190601f1680156111ac5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b33301461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061196f6038913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806117df6037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561138d578181015183820152602001611375565b50505050905090810190601f1680156113ba5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156113ed5781810151838201526020016113d5565b50505050905090810190601f16801561141a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156114f25781810151838201526020016114da565b50505050905090810190601f16801561151f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561155257818101518382015260200161153a565b50505050905090810190601f16801561157f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b33301461160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611a636031913960400191505060405180910390fd5b6202a300811015611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061188e6034913960400191505060405180910390fd5b62278d008111156116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806118c26038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561179f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158209900f9729c1396723bb382b8fa06a2480afa88fff7a8a0813b50abd3b84dc92e64736f6c6343000510003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1C2B CODESIZE SUB DUP1 PUSH2 0x1C2B 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 PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BBC PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BF3 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE PUSH2 0x1AC8 DUP1 PUSH2 0xF4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A42B8F8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x679 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6B7 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x625 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x49D JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2AF JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x225 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x6CC SWAP2 POP POP 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 0x25F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x247 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28C 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 CALLVALUE DUP1 ISZERO PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0xD4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0xE32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xE4E SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x1294 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x1598 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x159E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x15A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x15AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x15B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16F6 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 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0x170B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17A7 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7B0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7F5 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x828 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x810 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x855 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 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x8FE SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18FA PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x907 PUSH2 0x1727 JUMP JUMPDEST LT ISZERO PUSH2 0x95E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1849 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x971 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x172B AND JUMP JUMPDEST PUSH2 0x979 PUSH2 0x1727 JUMP JUMPDEST GT ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1816 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xA14 JUMPI POP DUP4 PUSH2 0xAE9 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xAB1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA74 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 SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB53 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB16 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 0xBB5 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 0xBBA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19DD PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC9F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC87 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCCC 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCFF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCE7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD2C 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 SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1937 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19A7 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xED9 PUSH1 0x2 SLOAD PUSH2 0xECD PUSH2 0x1727 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x172B AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xF31 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A1A PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFE7 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x101A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1002 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1047 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x111F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1107 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x114C 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x117F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1167 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11AC 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 SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x121F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x196F PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1304 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DF PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1375 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BA 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13ED JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13D5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x141A 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14F2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14DA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x151F 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1552 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x153A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x157F 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 SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH3 0x2A300 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x160B 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 0x1A63 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x1667 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 0x188E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C2 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x179F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 SWAP10 STOP 0xF9 PUSH19 0x9C1396723BB382B8FA06A2480AFA88FFF7A8A0 DUP2 EXTCODESIZE POP 0xAB 0xD3 0xB8 0x4D 0xC9 0x2E PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN SLOAD PUSH10 0x6D656C6F636B3A3A636F PUSH15 0x7374727563746F723A2044656C6179 KECCAK256 PUSH14 0x75737420657863656564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E00 ",
          "sourceMap": "52:4634:4:-;;;936:307;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:307:4;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;936:307:4;;;;;;;731:6;1002:23;;;994:91;;;;-1:-1:-1;;;994:91:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;780:7;1103:6;:23;;1095:92;;;;-1:-1:-1;;;1095:92:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:5;:14;;-1:-1:-1;;;;;1198:14:4;;;-1:-1:-1;;;;;;1198:14:4;;;;;;;;;;1222:5;:14;52:4634;;;;;;"
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "6080604052600436106100d25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461063a578063e177246e1461064f578063f2b0653714610679578063f851a440146106b7576100d2565b80636a42b8f8146105fb5780637d645fab14610610578063b1b43ae514610625576100d2565b80633a66f901116100b05780633a66f901146102ed5780634dd18bf51461045d578063591fcdfe1461049d576100d2565b80630825f38f146100d45780630e18b6811461029a57806326782247146102af575b005b610225600480360360a08110156100ea57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101ae57600080fd5b8201836020820111156101c057600080fd5b803590602001918460018302840111640100000000831117156101e257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106cc915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025f578181015183820152602001610247565b50505050905090810190601f16801561028c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a657600080fd5b506100d2610d4a565b3480156102bb57600080fd5b506102c4610e32565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102f957600080fd5b5061044b600480360360a081101561031057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561034d57600080fd5b82018360208201111561035f57600080fd5b8035906020019184600183028401116401000000008311171561038157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184600183028401116401000000008311171561040857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e4e915050565b60408051918252519081900360200190f35b34801561046957600080fd5b506100d26004803603602081101561048057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c7565b3480156104a957600080fd5b506100d2600480360360a08110156104c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156104fd57600080fd5b82018360208201111561050f57600080fd5b8035906020019184600183028401116401000000008311171561053157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460018302840111640100000000831117156105b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611294915050565b34801561060757600080fd5b5061044b611598565b34801561061c57600080fd5b5061044b61159e565b34801561063157600080fd5b5061044b6115a5565b34801561064657600080fd5b5061044b6115ac565b34801561065b57600080fd5b506100d26004803603602081101561067257600080fd5b50356115b3565b34801561068557600080fd5b506106a36004803603602081101561069c57600080fd5b50356116f6565b604080519115158252519081900360200190f35b3480156106c357600080fd5b506102c461170b565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461073f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806117a76038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107c85781810151838201526020016107b0565b50505050905090810190601f1680156107f55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610828578181015183820152602001610810565b50505050905090810190601f1680156108555780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490995060ff1697506108fe9650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118fa603d913960400191505060405180910390fd5b82610907611727565b101561095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118496045913960600191505060405180910390fd5b610971836212750063ffffffff61172b16565b610979611727565b11156109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806118166033913960400191505060405180910390fd5b600081815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a14575083610ae9565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610ab157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a74565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b5357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b16565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610bb5576040519150601f19603f3d011682016040523d82523d6000602084013e610bba565b606091505b509150915081610c15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119dd603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c9f578181015183820152602001610c87565b50505050905090810190601f168015610ccc5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cff578181015183820152602001610ce7565b50505050905090810190601f168015610d2c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119376038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806119a76036913960400191505060405180910390fd5b610ed9600254610ecd611727565b9063ffffffff61172b16565b821015610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611a1a6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610fba578181015183820152602001610fa2565b50505050905090810190601f168015610fe75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561101a578181015183820152602001611002565b50505050905090810190601f1680156110475780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561111f578181015183820152602001611107565b50505050905090810190601f16801561114c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561117f578181015183820152602001611167565b50505050905090810190601f1680156111ac5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b33301461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061196f6038913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806117df6037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561138d578181015183820152602001611375565b50505050905090810190601f1680156113ba5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156113ed5781810151838201526020016113d5565b50505050905090810190601f16801561141a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156114f25781810151838201526020016114da565b50505050905090810190601f16801561151f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561155257818101518382015260200161153a565b50505050905090810190601f16801561157f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b33301461160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611a636031913960400191505060405180910390fd5b6202a300811015611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061188e6034913960400191505060405180910390fd5b62278d008111156116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806118c26038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561179f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158209900f9729c1396723bb382b8fa06a2480afa88fff7a8a0813b50abd3b84dc92e64736f6c63430005100032",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A42B8F8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x679 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6B7 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x625 JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x49D JUMPI PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2AF JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x225 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x6CC SWAP2 POP POP 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 0x25F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x247 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28C 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 CALLVALUE DUP1 ISZERO PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0xD4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0xE32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xE4E SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x1294 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x1598 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x159E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x15A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44B PUSH2 0x15AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x15B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16F6 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 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0x170B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17A7 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7B0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7F5 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x828 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x810 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x855 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 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x8FE SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18FA PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x907 PUSH2 0x1727 JUMP JUMPDEST LT ISZERO PUSH2 0x95E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1849 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x971 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x172B AND JUMP JUMPDEST PUSH2 0x979 PUSH2 0x1727 JUMP JUMPDEST GT ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1816 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xA14 JUMPI POP DUP4 PUSH2 0xAE9 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xAB1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA74 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 SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB53 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB16 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 0xBB5 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 0xBBA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19DD PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC9F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC87 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCCC 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCFF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCE7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD2C 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 SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1937 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19A7 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xED9 PUSH1 0x2 SLOAD PUSH2 0xECD PUSH2 0x1727 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x172B AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xF31 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A1A PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFE7 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x101A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1002 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1047 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x111F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1107 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x114C 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x117F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1167 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11AC 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 SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x121F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x196F PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1304 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DF PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1375 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BA 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13ED JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13D5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x141A 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14F2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14DA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x151F 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 DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1552 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x153A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x157F 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 SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH3 0x2A300 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x160B 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 0x1A63 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2A300 DUP2 LT ISZERO PUSH2 0x1667 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 0x188E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C2 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x179F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 SWAP10 STOP 0xF9 PUSH19 0x9C1396723BB382B8FA06A2480AFA88FFF7A8A0 DUP2 EXTCODESIZE POP 0xAB 0xD3 0xB8 0x4D 0xC9 0x2E PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ",
          "sourceMap": "52:4634:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3228:1291;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3228:1291:4;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3228:1291:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3228:1291:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3228:1291:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3228:1291:4;;;;;;;;-1:-1:-1;3228:1291:4;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;3228:1291:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3228:1291:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3228:1291:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3228:1291:4;;-1:-1:-1;;3228:1291:4;;;-1:-1:-1;3228:1291:4;;-1:-1:-1;;3228:1291:4:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3228:1291:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1691:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1691:236:4;;;:::i;820:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:27:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2190:598;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2190:598:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2190:598:4;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2190:598:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2190:598:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2190:598:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2190:598:4;;;;;;;;-1:-1:-1;2190:598:4;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;2190:598:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2190:598:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2190:598:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2190:598:4;;-1:-1:-1;;2190:598:4;;;-1:-1:-1;2190:598:4;;-1:-1:-1;;2190:598:4:i;:::-;;;;;;;;;;;;;;;;1933:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1933:251:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1933:251:4;;;;:::i;2794:428::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2794:428:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2794:428:4;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2794:428:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2794:428:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2794:428:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2794:428:4;;;;;;;;-1:-1:-1;2794:428:4;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;2794:428:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2794:428:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2794:428:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2794:428:4;;-1:-1:-1;;2794:428:4;;;-1:-1:-1;2794:428:4;;-1:-1:-1;;2794:428:4:i;853:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;853:17:4;;;:::i;743:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;743:44:4;;;:::i;694:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;694:43:4;;;:::i;645:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;645:43:4;;;:::i;1286:399::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1286:399:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1286:399:4;;:::i;877:51::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;877:51:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;877:51:4;;:::i;:::-;;;;;;;;;;;;;;;;;;794:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;794:20:4;;;:::i;3228:1291::-;3408:5;;3362:12;;3408:5;;3394:10;:19;3386:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:14;3523:6;3531:5;3538:9;3549:4;3555:3;3512:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3512:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3512:47:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3512:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3512:47:4;;;22:32:-1;26:21;;;22:32;6:49;;3512:47:4;;;3502:58;;49:4:-1;3502:58:4;;;;3578:26;;;;:18;:26;;;;;;3502:58;;-1:-1:-1;3578:26:4;;;-1:-1:-1;3570:100:4;;-1:-1:-1;;;;;;;3570:100:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:3;3688:19;:17;:19::i;:::-;:26;;3680:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:21;:3;681:7;3829:21;:7;:21;:::i;:::-;3806:19;:17;:19::i;:::-;:44;;3798:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:5;3917:26;;;:18;:26;;;;;:34;;;;;;3998:23;;3962:21;;3994:175;;-1:-1:-1;4053:4:4;3994:175;;;4139:9;4123:27;;;;;;4153:4;4099:59;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4099:59:4;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4099:59:4;;;4088:70;;3994:175;4239:12;4253:23;4280:6;:11;;4298:5;4305:8;4280:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4280:34:4;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4238:76:4;;;;4332:7;4324:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4448:6;4421:63;;4440:6;4421:63;4456:5;4463:9;4474:4;4480:3;4421:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4421:63:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4421:63:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4421:63:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:10;3228:1291;-1:-1:-1;;;;;;;;;3228:1291:4:o;1691:236::-;1753:12;;;;1739:10;:26;1731:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1836:5;:18;;1844:10;1836:18;;;;;;;;-1:-1:-1;1864:25:4;;;;;;;;1905:15;;1836:18;1914:5;;;;1905:15;;;1691:236::o;820:27::-;;;;;;:::o;2190:598::-;2314:7;2355:5;;;;2341:10;:19;2333:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2444:30;2468:5;;2444:19;:17;:19::i;:::-;:23;:30;:23;:30;:::i;:::-;2437:3;:37;;2429:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:14;2601:6;2609:5;2616:9;2627:4;2633:3;2590:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2590:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2590:47:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2590:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2590:47:4;;;2580:58;;;;;;2563:75;;2677:4;2648:18;:26;2667:6;2648:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2722:6;2697:61;;2714:6;2697:61;2730:5;2737:9;2748:4;2754:3;2697:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2697:61:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2697:61:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2697:61:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2775:6;2190:598;-1:-1:-1;;;;;;2190:598:4:o;1933:251::-;2006:10;2028:4;2006:27;1998:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:12;:28;;;;;;;;;;;;;;;;2148:29;;2164:12;;;2148:29;;-1:-1:-1;;2148:29:4;1933:251;:::o;2794:428::-;2942:5;;;;2928:10;:19;2920:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3018:14;3056:6;3064:5;3071:9;3082:4;3088:3;3045:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3045:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3045:47:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3045:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3045:47:4;;;3035:58;;;;;;3018:75;;3132:5;3103:18;:26;3122:6;3103:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;3179:6;3153:62;;3171:6;3153:62;3187:5;3194:9;3205:4;3211:3;3153:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3153:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3153:62:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3153:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2794:428;;;;;;:::o;853:17::-;;;;:::o;743:44::-;780:7;743:44;:::o;694:43::-;731:6;694:43;:::o;645:::-;681:7;645:43;:::o;1286:399::-;1342:10;1364:4;1342:27;1334:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;731:6;1441;:23;;1433:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;780:7;1539:6;:23;;1531:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:5;:14;;;1663:15;;1641:6;;1663:15;;;;;1286:399;:::o;877:51::-;;;;;;;;;;;;;;;:::o;794:20::-;;;;;;:::o;4525:159::-;4662:15;4525:159;:::o;959:176:3:-;1017:7;1048:5;;;1071:6;;;;1063:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:1;959:176;-1:-1:-1;;;959:176:3:o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"delay_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"CancelTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"ExecuteTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"NewAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newDelay\",\"type\":\"uint256\"}],\"name\":\"NewDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"QueueTransaction\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"GRACE_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAXIMUM_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINIMUM_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"cancelTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"queueTransaction\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"queuedTransactions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delay_\",\"type\":\"uint256\"}],\"name\":\"setDelay\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingAdmin_\",\"type\":\"address\"}],\"name\":\"setPendingAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Timelock.sol\":\"Timelock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/SafeMath.sol\":{\"keccak256\":\"0x5082b717b4b08c7c2068666edce6f70363eeacee07777086ed8eef9353c39e2c\",\"urls\":[\"bzz-raw://02764f2c13cd5c53dd839d7554cfd6a668e45aff19e708b496896f181380cd7c\",\"dweb:/ipfs/QmcaGAZi7dQpCvmzKwzybQBYfyvFGdqHhXXXbJncTMewG7\"]},\"contracts/Timelock.sol\":{\"keccak256\":\"0xf4e7c9898b680886dcfe73f27c2f0e886f7a4c00e0d0ce83354f9cdd1dfe9844\",\"urls\":[\"bzz-raw://7ba36620ea1f3814743c3c23e32b1b1685610280e4bc69ccc322d9d69ccab020\",\"dweb:/ipfs/QmccqdCUsBuy3DgBr6ig6oaPz946WDJTgpxnzDY37K35Tt\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b50604051611c2b380380611c2b8339818101604052604081101561003357600080fd5b5080516020909101516202a30081101561007e5760405162461bcd60e51b8152600401808060200182810382526037815260200180611bbc6037913960400191505060405180910390fd5b62278d008111156100c05760405162461bcd60e51b8152600401808060200182810382526038815260200180611bf36038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b031990931692909217909155600255611ac8806100f46000396000f3fe6080604052600436106100d25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461063a578063e177246e1461064f578063f2b0653714610679578063f851a440146106b7576100d2565b80636a42b8f8146105fb5780637d645fab14610610578063b1b43ae514610625576100d2565b80633a66f901116100b05780633a66f901146102ed5780634dd18bf51461045d578063591fcdfe1461049d576100d2565b80630825f38f146100d45780630e18b6811461029a57806326782247146102af575b005b610225600480360360a08110156100ea57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101ae57600080fd5b8201836020820111156101c057600080fd5b803590602001918460018302840111640100000000831117156101e257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106cc915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025f578181015183820152602001610247565b50505050905090810190601f16801561028c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a657600080fd5b506100d2610d4a565b3480156102bb57600080fd5b506102c4610e32565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102f957600080fd5b5061044b600480360360a081101561031057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561034d57600080fd5b82018360208201111561035f57600080fd5b8035906020019184600183028401116401000000008311171561038157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184600183028401116401000000008311171561040857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e4e915050565b60408051918252519081900360200190f35b34801561046957600080fd5b506100d26004803603602081101561048057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c7565b3480156104a957600080fd5b506100d2600480360360a08110156104c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156104fd57600080fd5b82018360208201111561050f57600080fd5b8035906020019184600183028401116401000000008311171561053157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460018302840111640100000000831117156105b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611294915050565b34801561060757600080fd5b5061044b611598565b34801561061c57600080fd5b5061044b61159e565b34801561063157600080fd5b5061044b6115a5565b34801561064657600080fd5b5061044b6115ac565b34801561065b57600080fd5b506100d26004803603602081101561067257600080fd5b50356115b3565b34801561068557600080fd5b506106a36004803603602081101561069c57600080fd5b50356116f6565b604080519115158252519081900360200190f35b3480156106c357600080fd5b506102c461170b565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461073f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806117a76038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107c85781810151838201526020016107b0565b50505050905090810190601f1680156107f55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610828578181015183820152602001610810565b50505050905090810190601f1680156108555780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490995060ff1697506108fe9650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118fa603d913960400191505060405180910390fd5b82610907611727565b101561095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118496045913960600191505060405180910390fd5b610971836212750063ffffffff61172b16565b610979611727565b11156109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806118166033913960400191505060405180910390fd5b600081815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a14575083610ae9565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610ab157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a74565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b5357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b16565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610bb5576040519150601f19603f3d011682016040523d82523d6000602084013e610bba565b606091505b509150915081610c15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119dd603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c9f578181015183820152602001610c87565b50505050905090810190601f168015610ccc5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cff578181015183820152602001610ce7565b50505050905090810190601f168015610d2c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119376038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806119a76036913960400191505060405180910390fd5b610ed9600254610ecd611727565b9063ffffffff61172b16565b821015610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611a1a6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610fba578181015183820152602001610fa2565b50505050905090810190601f168015610fe75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561101a578181015183820152602001611002565b50505050905090810190601f1680156110475780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561111f578181015183820152602001611107565b50505050905090810190601f16801561114c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561117f578181015183820152602001611167565b50505050905090810190601f1680156111ac5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b33301461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061196f6038913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806117df6037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561138d578181015183820152602001611375565b50505050905090810190601f1680156113ba5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156113ed5781810151838201526020016113d5565b50505050905090810190601f16801561141a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156114f25781810151838201526020016114da565b50505050905090810190601f16801561151f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561155257818101518382015260200161153a565b50505050905090810190601f16801561157f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b33301461160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611a636031913960400191505060405180910390fd5b6202a300811015611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061188e6034913960400191505060405180910390fd5b62278d008111156116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806118c26038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561179f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158209900f9729c1396723bb382b8fa06a2480afa88fff7a8a0813b50abd3b84dc92e64736f6c6343000510003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
      "bin": "608060405234801561001057600080fd5b50604051611c2b380380611c2b8339818101604052604081101561003357600080fd5b5080516020909101516202a30081101561007e5760405162461bcd60e51b8152600401808060200182810382526037815260200180611bbc6037913960400191505060405180910390fd5b62278d008111156100c05760405162461bcd60e51b8152600401808060200182810382526038815260200180611bf36038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b031990931692909217909155600255611ac8806100f46000396000f3fe6080604052600436106100d25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461063a578063e177246e1461064f578063f2b0653714610679578063f851a440146106b7576100d2565b80636a42b8f8146105fb5780637d645fab14610610578063b1b43ae514610625576100d2565b80633a66f901116100b05780633a66f901146102ed5780634dd18bf51461045d578063591fcdfe1461049d576100d2565b80630825f38f146100d45780630e18b6811461029a57806326782247146102af575b005b610225600480360360a08110156100ea57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101ae57600080fd5b8201836020820111156101c057600080fd5b803590602001918460018302840111640100000000831117156101e257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106cc915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025f578181015183820152602001610247565b50505050905090810190601f16801561028c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a657600080fd5b506100d2610d4a565b3480156102bb57600080fd5b506102c4610e32565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102f957600080fd5b5061044b600480360360a081101561031057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561034d57600080fd5b82018360208201111561035f57600080fd5b8035906020019184600183028401116401000000008311171561038157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184600183028401116401000000008311171561040857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e4e915050565b60408051918252519081900360200190f35b34801561046957600080fd5b506100d26004803603602081101561048057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c7565b3480156104a957600080fd5b506100d2600480360360a08110156104c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156104fd57600080fd5b82018360208201111561050f57600080fd5b8035906020019184600183028401116401000000008311171561053157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460018302840111640100000000831117156105b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611294915050565b34801561060757600080fd5b5061044b611598565b34801561061c57600080fd5b5061044b61159e565b34801561063157600080fd5b5061044b6115a5565b34801561064657600080fd5b5061044b6115ac565b34801561065b57600080fd5b506100d26004803603602081101561067257600080fd5b50356115b3565b34801561068557600080fd5b506106a36004803603602081101561069c57600080fd5b50356116f6565b604080519115158252519081900360200190f35b3480156106c357600080fd5b506102c461170b565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461073f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806117a76038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107c85781810151838201526020016107b0565b50505050905090810190601f1680156107f55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610828578181015183820152602001610810565b50505050905090810190601f1680156108555780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490995060ff1697506108fe9650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118fa603d913960400191505060405180910390fd5b82610907611727565b101561095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118496045913960600191505060405180910390fd5b610971836212750063ffffffff61172b16565b610979611727565b11156109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806118166033913960400191505060405180910390fd5b600081815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a14575083610ae9565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610ab157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a74565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b5357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b16565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610bb5576040519150601f19603f3d011682016040523d82523d6000602084013e610bba565b606091505b509150915081610c15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119dd603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c9f578181015183820152602001610c87565b50505050905090810190601f168015610ccc5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cff578181015183820152602001610ce7565b50505050905090810190601f168015610d2c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119376038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806119a76036913960400191505060405180910390fd5b610ed9600254610ecd611727565b9063ffffffff61172b16565b821015610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611a1a6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610fba578181015183820152602001610fa2565b50505050905090810190601f168015610fe75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561101a578181015183820152602001611002565b50505050905090810190601f1680156110475780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561111f578181015183820152602001611107565b50505050905090810190601f16801561114c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561117f578181015183820152602001611167565b50505050905090810190601f1680156111ac5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b33301461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061196f6038913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806117df6037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561138d578181015183820152602001611375565b50505050905090810190601f1680156113ba5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156113ed5781810151838201526020016113d5565b50505050905090810190601f16801561141a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156114f25781810151838201526020016114da565b50505050905090810190601f16801561151f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561155257818101518382015260200161153a565b50505050905090810190601f16801561157f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b33301461160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611a636031913960400191505060405180910390fd5b6202a300811015611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061188e6034913960400191505060405180910390fd5b62278d008111156116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806118c26038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561179f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158209900f9729c1396723bb382b8fa06a2480afa88fff7a8a0813b50abd3b84dc92e64736f6c6343000510003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
      "bin-runtime": "6080604052600436106100d25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461063a578063e177246e1461064f578063f2b0653714610679578063f851a440146106b7576100d2565b80636a42b8f8146105fb5780637d645fab14610610578063b1b43ae514610625576100d2565b80633a66f901116100b05780633a66f901146102ed5780634dd18bf51461045d578063591fcdfe1461049d576100d2565b80630825f38f146100d45780630e18b6811461029a57806326782247146102af575b005b610225600480360360a08110156100ea57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101ae57600080fd5b8201836020820111156101c057600080fd5b803590602001918460018302840111640100000000831117156101e257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106cc915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025f578181015183820152602001610247565b50505050905090810190601f16801561028c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a657600080fd5b506100d2610d4a565b3480156102bb57600080fd5b506102c4610e32565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102f957600080fd5b5061044b600480360360a081101561031057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561034d57600080fd5b82018360208201111561035f57600080fd5b8035906020019184600183028401116401000000008311171561038157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184600183028401116401000000008311171561040857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610e4e915050565b60408051918252519081900360200190f35b34801561046957600080fd5b506100d26004803603602081101561048057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c7565b3480156104a957600080fd5b506100d2600480360360a08110156104c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156104fd57600080fd5b82018360208201111561050f57600080fd5b8035906020019184600183028401116401000000008311171561053157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460018302840111640100000000831117156105b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611294915050565b34801561060757600080fd5b5061044b611598565b34801561061c57600080fd5b5061044b61159e565b34801561063157600080fd5b5061044b6115a5565b34801561064657600080fd5b5061044b6115ac565b34801561065b57600080fd5b506100d26004803603602081101561067257600080fd5b50356115b3565b34801561068557600080fd5b506106a36004803603602081101561069c57600080fd5b50356116f6565b604080519115158252519081900360200190f35b3480156106c357600080fd5b506102c461170b565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461073f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806117a76038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107c85781810151838201526020016107b0565b50505050905090810190601f1680156107f55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610828578181015183820152602001610810565b50505050905090810190601f1680156108555780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490995060ff1697506108fe9650505050505050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118fa603d913960400191505060405180910390fd5b82610907611727565b101561095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806118496045913960600191505060405180910390fd5b610971836212750063ffffffff61172b16565b610979611727565b11156109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806118166033913960400191505060405180910390fd5b600081815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558451606090610a14575083610ae9565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610ab157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a74565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610b5357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b16565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610bb5576040519150601f19603f3d011682016040523d82523d6000602084013e610bba565b606091505b509150915081610c15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806119dd603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c9f578181015183820152602001610c87565b50505050905090810190601f168015610ccc5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cff578181015183820152602001610ce7565b50505050905090810190601f168015610d2c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806119376038913960400191505060405180910390fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178083556001805490921690915560405173ffffffffffffffffffffffffffffffffffffffff909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806119a76036913960400191505060405180910390fd5b610ed9600254610ecd611727565b9063ffffffff61172b16565b821015610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611a1a6049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610fba578181015183820152602001610fa2565b50505050905090810190601f168015610fe75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561101a578181015183820152602001611002565b50505050905090810190601f1680156110475780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561111f578181015183820152602001611107565b50505050905090810190601f16801561114c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561117f578181015183820152602001611167565b50505050905090810190601f1680156111ac5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b33301461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061196f6038913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806117df6037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561138d578181015183820152602001611375565b50505050905090810190601f1680156113ba5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156113ed5781810151838201526020016113d5565b50505050905090810190601f16801561141a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156114f25781810151838201526020016114da565b50505050905090810190601f16801561151f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561155257818101518382015260200161153a565b50505050905090810190601f16801561157f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b33301461160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611a636031913960400191505060405180910390fd5b6202a300811015611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061188e6034913960400191505060405180910390fd5b62278d008111156116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806118c26038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b60008282018381101561179f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158209900f9729c1396723bb382b8fa06a2480afa88fff7a8a0813b50abd3b84dc92e64736f6c63430005100032",
      "srcmap": "52:4634:4:-;;;936:307;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:307:4;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;936:307:4;;;;;;;731:6;1002:23;;;994:91;;;;-1:-1:-1;;;994:91:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;780:7;1103:6;:23;;1095:92;;;;-1:-1:-1;;;1095:92:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:5;:14;;-1:-1:-1;;;;;1198:14:4;;;-1:-1:-1;;;;;;1198:14:4;;;;;;;;;;1222:5;:14;52:4634;;;;;;",
      "srcmap-runtime": "52:4634:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3228:1291;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3228:1291:4;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3228:1291:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3228:1291:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3228:1291:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3228:1291:4;;;;;;;;-1:-1:-1;3228:1291:4;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;3228:1291:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3228:1291:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3228:1291:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3228:1291:4;;-1:-1:-1;;3228:1291:4;;;-1:-1:-1;3228:1291:4;;-1:-1:-1;;3228:1291:4:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3228:1291:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1691:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1691:236:4;;;:::i;820:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:27:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2190:598;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2190:598:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2190:598:4;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2190:598:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2190:598:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2190:598:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2190:598:4;;;;;;;;-1:-1:-1;2190:598:4;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;2190:598:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2190:598:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2190:598:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2190:598:4;;-1:-1:-1;;2190:598:4;;;-1:-1:-1;2190:598:4;;-1:-1:-1;;2190:598:4:i;:::-;;;;;;;;;;;;;;;;1933:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1933:251:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1933:251:4;;;;:::i;2794:428::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2794:428:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2794:428:4;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2794:428:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2794:428:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2794:428:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2794:428:4;;;;;;;;-1:-1:-1;2794:428:4;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;2794:428:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2794:428:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2794:428:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2794:428:4;;-1:-1:-1;;2794:428:4;;;-1:-1:-1;2794:428:4;;-1:-1:-1;;2794:428:4:i;853:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;853:17:4;;;:::i;743:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;743:44:4;;;:::i;694:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;694:43:4;;;:::i;645:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;645:43:4;;;:::i;1286:399::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1286:399:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1286:399:4;;:::i;877:51::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;877:51:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;877:51:4;;:::i;:::-;;;;;;;;;;;;;;;;;;794:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;794:20:4;;;:::i;3228:1291::-;3408:5;;3362:12;;3408:5;;3394:10;:19;3386:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3485:14;3523:6;3531:5;3538:9;3549:4;3555:3;3512:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3512:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3512:47:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3512:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3512:47:4;;;22:32:-1;26:21;;;22:32;6:49;;3512:47:4;;;3502:58;;49:4:-1;3502:58:4;;;;3578:26;;;;:18;:26;;;;;;3502:58;;-1:-1:-1;3578:26:4;;;-1:-1:-1;3570:100:4;;-1:-1:-1;;;;;;;3570:100:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:3;3688:19;:17;:19::i;:::-;:26;;3680:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:21;:3;681:7;3829:21;:7;:21;:::i;:::-;3806:19;:17;:19::i;:::-;:44;;3798:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:5;3917:26;;;:18;:26;;;;;:34;;;;;;3998:23;;3962:21;;3994:175;;-1:-1:-1;4053:4:4;3994:175;;;4139:9;4123:27;;;;;;4153:4;4099:59;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4099:59:4;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4099:59:4;;;4088:70;;3994:175;4239:12;4253:23;4280:6;:11;;4298:5;4305:8;4280:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4280:34:4;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4238:76:4;;;;4332:7;4324:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4448:6;4421:63;;4440:6;4421:63;4456:5;4463:9;4474:4;4480:3;4421:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4421:63:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4421:63:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4421:63:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:10;3228:1291;-1:-1:-1;;;;;;;;;3228:1291:4:o;1691:236::-;1753:12;;;;1739:10;:26;1731:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1836:5;:18;;1844:10;1836:18;;;;;;;;-1:-1:-1;1864:25:4;;;;;;;;1905:15;;1836:18;1914:5;;;;1905:15;;;1691:236::o;820:27::-;;;;;;:::o;2190:598::-;2314:7;2355:5;;;;2341:10;:19;2333:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2444:30;2468:5;;2444:19;:17;:19::i;:::-;:23;:30;:23;:30;:::i;:::-;2437:3;:37;;2429:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:14;2601:6;2609:5;2616:9;2627:4;2633:3;2590:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2590:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2590:47:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2590:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2590:47:4;;;2580:58;;;;;;2563:75;;2677:4;2648:18;:26;2667:6;2648:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2722:6;2697:61;;2714:6;2697:61;2730:5;2737:9;2748:4;2754:3;2697:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2697:61:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2697:61:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2697:61:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2775:6;2190:598;-1:-1:-1;;;;;;2190:598:4:o;1933:251::-;2006:10;2028:4;2006:27;1998:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:12;:28;;;;;;;;;;;;;;;;2148:29;;2164:12;;;2148:29;;-1:-1:-1;;2148:29:4;1933:251;:::o;2794:428::-;2942:5;;;;2928:10;:19;2920:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3018:14;3056:6;3064:5;3071:9;3082:4;3088:3;3045:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3045:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3045:47:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3045:47:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3045:47:4;;;3035:58;;;;;;3018:75;;3132:5;3103:18;:26;3122:6;3103:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;3179:6;3153:62;;3171:6;3153:62;3187:5;3194:9;3205:4;3211:3;3153:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3153:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3153:62:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3153:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2794:428;;;;;;:::o;853:17::-;;;;:::o;743:44::-;780:7;743:44;:::o;694:43::-;731:6;694:43;:::o;645:::-;681:7;645:43;:::o;1286:399::-;1342:10;1364:4;1342:27;1334:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;731:6;1441;:23;;1433:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;780:7;1539:6;:23;;1531:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:5;:14;;;1663:15;;1641:6;;1663:15;;;;;1286:399;:::o;877:51::-;;;;;;;;;;;;;;;:::o;794:20::-;;;;;;:::o;4525:159::-;4662:15;4525:159;:::o;959:176:3:-;1017:7;1048:5;;;1071:6;;;;1063:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:1;959:176;-1:-1:-1;;;959:176:3:o"
    },
    "contracts/TreasuryVester.sol:IUni": {
      "abi": [
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rawAmount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/TreasuryVester.sol\":\"IUni\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/SafeMath.sol\":{\"keccak256\":\"0x5082b717b4b08c7c2068666edce6f70363eeacee07777086ed8eef9353c39e2c\",\"urls\":[\"bzz-raw://02764f2c13cd5c53dd839d7554cfd6a668e45aff19e708b496896f181380cd7c\",\"dweb:/ipfs/QmcaGAZi7dQpCvmzKwzybQBYfyvFGdqHhXXXbJncTMewG7\"]},\"contracts/TreasuryVester.sol\":{\"keccak256\":\"0x972c1c25ab463dba067e4328bac7fef1685fbf42fed6dbc0ce265c7b9785fd9e\",\"urls\":[\"bzz-raw://610a1aba984431c73d63972fea79ee5fd4af446f964c296284fb6bb822ea0f2f\",\"dweb:/ipfs/QmREUAbC1gdJUsrSRzbvvDmYvQJ5kTiY2LRUt2U4VU9y1q\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/TreasuryVester.sol:TreasuryVester": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "uni_",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "vestingAmount_",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "vestingBegin_",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "vestingCliff_",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "vestingEnd_",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "constant": false,
          "inputs": [],
          "name": "claim",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "lastUpdate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "recipient",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient_",
              "type": "address"
            }
          ],
          "name": "setRecipient",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "uni",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "vestingAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "vestingBegin",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "vestingCliff",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "vestingEnd",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604051610867380380610867833981810160405260c081101561003357600080fd5b508051602082015160408301516060840151608085015160a0909501519394929391929091428310156100975760405162461bcd60e51b81526004018080602001828103825260348152602001806107d76034913960400191505060405180910390fd5b828210156100d65760405162461bcd60e51b815260040180806020018281038252602f81526020018061080b602f913960400191505060405180910390fd5b8181116101145760405162461bcd60e51b815260040180806020018281038252602d81526020018061083a602d913960400191505060405180910390fd5b600080546001600160a01b039788166001600160a01b0319918216179091556001805496909716951694909417909455600291909155600381905560049290925560055560065561066d8061016a6000396000f3fe608060405234801561001057600080fd5b50600436106100a25760003560e01c806384a1931f11610076578063e29bc68b1161005b578063e29bc68b1461013f578063edc9af9514610147578063f3640e741461014f576100a2565b806384a1931f1461012f578063c046371114610137576100a2565b8062728f76146100a75780633bbed4a0146100c15780634e71d92d146100f657806366d003ac146100fe575b600080fd5b6100af610157565b60408051918252519081900360200190f35b6100f4600480360360208110156100d757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661015d565b005b6100f4610214565b610106610405565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100af610421565b6100af610427565b6100af61042d565b610106610433565b6100af61044f565b60025481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806105cb602a913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045442101561026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806106166023913960400191505060405180910390fd5b6000600554421061031e57600054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b50519050610354565b61034d60035460055403610341600654420360025461045590919063ffffffff16565b9063ffffffff6104d116565b4260065590505b60008054600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b505050506040513d602081101561040057600080fd5b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60065481565b60035481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600082610464575060006104cb565b8282028284828161047157fe5b04146104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105f56021913960400191505060405180910390fd5b90505b92915050565b60006104c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610579578181015183820152602001610561565b50505050905090810190601f1680156105a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105c057fe5b049594505050505056fe54726561737572795665737465723a3a736574526563697069656e743a20756e617574686f72697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754726561737572795665737465723a3a636c61696d3a206e6f742074696d6520796574a265627a7a72315820b9382470bb8af267fe135bae65d43ec540b7eb889218f4b0851327c0eb2522cc64736f6c6343000510003254726561737572795665737465723a3a636f6e7374727563746f723a2076657374696e6720626567696e20746f6f206561726c7954726561737572795665737465723a3a636f6e7374727563746f723a20636c69666620697320746f6f206561726c7954726561737572795665737465723a3a636f6e7374727563746f723a20656e6420697320746f6f206561726c79",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x867 CODESIZE SUB DUP1 PUSH2 0x867 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 TIMESTAMP DUP4 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7D7 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x80B PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 GT PUSH2 0x114 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x83A PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP7 SWAP1 SWAP8 AND SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP5 SSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x4 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x5 SSTORE PUSH1 0x6 SSTORE PUSH2 0x66D DUP1 PUSH2 0x16A 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 0xA2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84A1931F GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE29BC68B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE29BC68B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0xEDC9AF95 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xF3640E74 EQ PUSH2 0x14F JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH4 0x84A1931F EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0xC0463711 EQ PUSH2 0x137 JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH3 0x728F76 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x3BBED4A0 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x4E71D92D EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x66D003AC EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF4 PUSH2 0x214 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAF PUSH2 0x421 JUMP JUMPDEST PUSH2 0xAF PUSH2 0x427 JUMP JUMPDEST PUSH2 0xAF PUSH2 0x42D JUMP JUMPDEST PUSH2 0x106 PUSH2 0x433 JUMP JUMPDEST PUSH2 0xAF PUSH2 0x44F JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CB PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD TIMESTAMP LT ISZERO PUSH2 0x26F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x616 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD TIMESTAMP LT PUSH2 0x31E JUMPI PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x354 JUMP JUMPDEST PUSH2 0x34D PUSH1 0x3 SLOAD PUSH1 0x5 SLOAD SUB PUSH2 0x341 PUSH1 0x6 SLOAD TIMESTAMP SUB PUSH1 0x2 SLOAD PUSH2 0x455 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4D1 AND JUMP JUMPDEST TIMESTAMP PUSH1 0x6 SSTORE SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 SWAP3 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x464 JUMPI POP PUSH1 0x0 PUSH2 0x4CB JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x471 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4C8 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 0x5F5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x579 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x561 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5A6 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x5C0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID SLOAD PUSH19 0x6561737572795665737465723A3A7365745265 PUSH4 0x69706965 PUSH15 0x743A20756E617574686F72697A6564 MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77547265617375727956 PUSH6 0x737465723A3A PUSH4 0x6C61696D GASPRICE KECCAK256 PUSH15 0x6F742074696D6520796574A265627A PUSH27 0x72315820B9382470BB8AF267FE135BAE65D43EC540B7EB889218F4 0xB0 DUP6 SGT 0x27 0xC0 0xEB 0x25 0x22 0xCC PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN SLOAD PUSH19 0x6561737572795665737465723A3A636F6E7374 PUSH19 0x7563746F723A2076657374696E672062656769 PUSH15 0x20746F6F206561726C795472656173 PUSH22 0x72795665737465723A3A636F6E7374727563746F723A KECCAK256 PUSH4 0x6C696666 KECCAK256 PUSH10 0x7320746F6F206561726C PUSH26 0x54726561737572795665737465723A3A636F6E7374727563746F PUSH19 0x3A20656E6420697320746F6F206561726C7900 ",
          "sourceMap": "52:1649:5:-;;;316:735;8:9:-1;5:2;;;30:1;27;20:12;5:2;316:735:5;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;316:735:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;537:15;520:32;;;512:97;;;;-1:-1:-1;;;512:97:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:13;627;:30;;619:90;;;;-1:-1:-1;;;619:90:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;741:13;727:11;:27;719:85;;;;-1:-1:-1;;;719:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:3;:10;;-1:-1:-1;;;;;815:10:5;;;-1:-1:-1;;;;;;815:10:5;;;;;;;;835:22;;;;;;;;;;;;;;;868:13;:30;;;;908:12;:28;;;946:12;:28;;;;984:10;:24;1019:10;:25;52:1649;;;;;;"
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100a25760003560e01c806384a1931f11610076578063e29bc68b1161005b578063e29bc68b1461013f578063edc9af9514610147578063f3640e741461014f576100a2565b806384a1931f1461012f578063c046371114610137576100a2565b8062728f76146100a75780633bbed4a0146100c15780634e71d92d146100f657806366d003ac146100fe575b600080fd5b6100af610157565b60408051918252519081900360200190f35b6100f4600480360360208110156100d757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661015d565b005b6100f4610214565b610106610405565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100af610421565b6100af610427565b6100af61042d565b610106610433565b6100af61044f565b60025481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806105cb602a913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045442101561026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806106166023913960400191505060405180910390fd5b6000600554421061031e57600054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b50519050610354565b61034d60035460055403610341600654420360025461045590919063ffffffff16565b9063ffffffff6104d116565b4260065590505b60008054600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b505050506040513d602081101561040057600080fd5b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60065481565b60035481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600082610464575060006104cb565b8282028284828161047157fe5b04146104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105f56021913960400191505060405180910390fd5b90505b92915050565b60006104c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610579578181015183820152602001610561565b50505050905090810190601f1680156105a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105c057fe5b049594505050505056fe54726561737572795665737465723a3a736574526563697069656e743a20756e617574686f72697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754726561737572795665737465723a3a636c61696d3a206e6f742074696d6520796574a265627a7a72315820b9382470bb8af267fe135bae65d43ec540b7eb889218f4b0851327c0eb2522cc64736f6c63430005100032",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84A1931F GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE29BC68B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE29BC68B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0xEDC9AF95 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xF3640E74 EQ PUSH2 0x14F JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH4 0x84A1931F EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0xC0463711 EQ PUSH2 0x137 JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH3 0x728F76 EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x3BBED4A0 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x4E71D92D EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x66D003AC EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF4 PUSH2 0x214 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAF PUSH2 0x421 JUMP JUMPDEST PUSH2 0xAF PUSH2 0x427 JUMP JUMPDEST PUSH2 0xAF PUSH2 0x42D JUMP JUMPDEST PUSH2 0x106 PUSH2 0x433 JUMP JUMPDEST PUSH2 0xAF PUSH2 0x44F JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CB PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD TIMESTAMP LT ISZERO PUSH2 0x26F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x616 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD TIMESTAMP LT PUSH2 0x31E JUMPI PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x354 JUMP JUMPDEST PUSH2 0x34D PUSH1 0x3 SLOAD PUSH1 0x5 SLOAD SUB PUSH2 0x341 PUSH1 0x6 SLOAD TIMESTAMP SUB PUSH1 0x2 SLOAD PUSH2 0x455 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4D1 AND JUMP JUMPDEST TIMESTAMP PUSH1 0x6 SSTORE SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 SWAP3 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x464 JUMPI POP PUSH1 0x0 PUSH2 0x4CB JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x471 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x4C8 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 0x5F5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x579 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x561 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5A6 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x5C0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID SLOAD PUSH19 0x6561737572795665737465723A3A7365745265 PUSH4 0x69706965 PUSH15 0x743A20756E617574686F72697A6564 MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77547265617375727956 PUSH6 0x737465723A3A PUSH4 0x6C61696D GASPRICE KECCAK256 PUSH15 0x6F742074696D6520796574A265627A PUSH27 0x72315820B9382470BB8AF267FE135BAE65D43EC540B7EB889218F4 0xB0 DUP6 SGT 0x27 0xC0 0xEB 0x25 0x22 0xCC PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ",
          "sourceMap": "52:1649:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52:1649:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167:25;;;:::i;:::-;;;;;;;;;;;;;;;;1057:176;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1057:176:5;;;;:::i;:::-;;1239:460;;;:::i;136:24::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;258:22;;;:::i;287:::-;;;:::i;198:24::-;;;:::i;112:18::-;;;:::i;228:24::-;;;:::i;167:25::-;;;;:::o;1057:176::-;1138:9;;;;1124:10;:23;1116:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1204:9;:22;;;;;;;;;;;;;;;1057:176::o;1239:460::-;1300:12;;1281:15;:31;;1273:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1362:11;1406:10;;1387:15;:29;1383:263;;1446:3;;1441:34;;;;;;1469:4;1441:34;;;;;;1446:3;;;;;1441:19;;:34;;;;;;;;;;;;;;;1446:3;1441:34;;;5:2:-1;;;;30:1;27;20:12;5:2;1441:34:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1441:34:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1441:34:5;;-1:-1:-1;1383:263:5;;;1515:78;1580:12;;1567:10;;:25;1515:47;1551:10;;1533:15;:28;1515:13;;:17;;:47;;;;:::i;:::-;:51;:78;:51;:78;:::i;:::-;1620:15;1607:10;:28;1506:87;-1:-1:-1;1383:263:5;1660:3;;;;1674:9;1655:37;;;;;;1660:3;1674:9;;;1655:37;;;;;;;;;;;;1660:3;;;;;1655:18;;:37;;;;;;;;;;;;;;;;;;1660:3;1655:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1655:37:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1655:37:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;1239:460:5:o;136:24::-;;;;;;:::o;258:22::-;;;;:::o;287:::-;;;;:::o;198:24::-;;;;:::o;112:18::-;;;;;;:::o;228:24::-;;;;:::o;2656:459:3:-;2714:7;2955:6;2951:45;;-1:-1:-1;2984:1:3;2977:8;;2951:45;3018:5;;;3022:1;3018;:5;:1;3041:5;;;;;:10;3033:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3107:1;-1:-1:-1;2656:459:3;;;;;:::o;4267:130::-;4325:7;4351:39;4355:1;4358;4351:39;;;;;;;;;;;;;;;;;4958:7;5058:12;5051:5;5043:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5043:28:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5081:9;5097:1;5093;:5;;;;;;;4872:338;-1:-1:-1;;;;;4872:338:3:o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"uni_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"vestingAmount_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"vestingBegin_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"vestingCliff_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"vestingEnd_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":false,\"inputs\":[],\"name\":\"claim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastUpdate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient_\",\"type\":\"address\"}],\"name\":\"setRecipient\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"uni\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vestingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vestingBegin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vestingCliff\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vestingEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/TreasuryVester.sol\":\"TreasuryVester\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/SafeMath.sol\":{\"keccak256\":\"0x5082b717b4b08c7c2068666edce6f70363eeacee07777086ed8eef9353c39e2c\",\"urls\":[\"bzz-raw://02764f2c13cd5c53dd839d7554cfd6a668e45aff19e708b496896f181380cd7c\",\"dweb:/ipfs/QmcaGAZi7dQpCvmzKwzybQBYfyvFGdqHhXXXbJncTMewG7\"]},\"contracts/TreasuryVester.sol\":{\"keccak256\":\"0x972c1c25ab463dba067e4328bac7fef1685fbf42fed6dbc0ce265c7b9785fd9e\",\"urls\":[\"bzz-raw://610a1aba984431c73d63972fea79ee5fd4af446f964c296284fb6bb822ea0f2f\",\"dweb:/ipfs/QmREUAbC1gdJUsrSRzbvvDmYvQJ5kTiY2LRUt2U4VU9y1q\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b50604051610867380380610867833981810160405260c081101561003357600080fd5b508051602082015160408301516060840151608085015160a0909501519394929391929091428310156100975760405162461bcd60e51b81526004018080602001828103825260348152602001806107d76034913960400191505060405180910390fd5b828210156100d65760405162461bcd60e51b815260040180806020018281038252602f81526020018061080b602f913960400191505060405180910390fd5b8181116101145760405162461bcd60e51b815260040180806020018281038252602d81526020018061083a602d913960400191505060405180910390fd5b600080546001600160a01b039788166001600160a01b0319918216179091556001805496909716951694909417909455600291909155600381905560049290925560055560065561066d8061016a6000396000f3fe608060405234801561001057600080fd5b50600436106100a25760003560e01c806384a1931f11610076578063e29bc68b1161005b578063e29bc68b1461013f578063edc9af9514610147578063f3640e741461014f576100a2565b806384a1931f1461012f578063c046371114610137576100a2565b8062728f76146100a75780633bbed4a0146100c15780634e71d92d146100f657806366d003ac146100fe575b600080fd5b6100af610157565b60408051918252519081900360200190f35b6100f4600480360360208110156100d757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661015d565b005b6100f4610214565b610106610405565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100af610421565b6100af610427565b6100af61042d565b610106610433565b6100af61044f565b60025481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806105cb602a913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045442101561026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806106166023913960400191505060405180910390fd5b6000600554421061031e57600054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b50519050610354565b61034d60035460055403610341600654420360025461045590919063ffffffff16565b9063ffffffff6104d116565b4260065590505b60008054600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b505050506040513d602081101561040057600080fd5b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60065481565b60035481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600082610464575060006104cb565b8282028284828161047157fe5b04146104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105f56021913960400191505060405180910390fd5b90505b92915050565b60006104c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610579578181015183820152602001610561565b50505050905090810190601f1680156105a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105c057fe5b049594505050505056fe54726561737572795665737465723a3a736574526563697069656e743a20756e617574686f72697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754726561737572795665737465723a3a636c61696d3a206e6f742074696d6520796574a265627a7a72315820b9382470bb8af267fe135bae65d43ec540b7eb889218f4b0851327c0eb2522cc64736f6c6343000510003254726561737572795665737465723a3a636f6e7374727563746f723a2076657374696e6720626567696e20746f6f206561726c7954726561737572795665737465723a3a636f6e7374727563746f723a20636c69666620697320746f6f206561726c7954726561737572795665737465723a3a636f6e7374727563746f723a20656e6420697320746f6f206561726c79",
      "bin": "608060405234801561001057600080fd5b50604051610867380380610867833981810160405260c081101561003357600080fd5b508051602082015160408301516060840151608085015160a0909501519394929391929091428310156100975760405162461bcd60e51b81526004018080602001828103825260348152602001806107d76034913960400191505060405180910390fd5b828210156100d65760405162461bcd60e51b815260040180806020018281038252602f81526020018061080b602f913960400191505060405180910390fd5b8181116101145760405162461bcd60e51b815260040180806020018281038252602d81526020018061083a602d913960400191505060405180910390fd5b600080546001600160a01b039788166001600160a01b0319918216179091556001805496909716951694909417909455600291909155600381905560049290925560055560065561066d8061016a6000396000f3fe608060405234801561001057600080fd5b50600436106100a25760003560e01c806384a1931f11610076578063e29bc68b1161005b578063e29bc68b1461013f578063edc9af9514610147578063f3640e741461014f576100a2565b806384a1931f1461012f578063c046371114610137576100a2565b8062728f76146100a75780633bbed4a0146100c15780634e71d92d146100f657806366d003ac146100fe575b600080fd5b6100af610157565b60408051918252519081900360200190f35b6100f4600480360360208110156100d757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661015d565b005b6100f4610214565b610106610405565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100af610421565b6100af610427565b6100af61042d565b610106610433565b6100af61044f565b60025481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806105cb602a913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045442101561026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806106166023913960400191505060405180910390fd5b6000600554421061031e57600054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b50519050610354565b61034d60035460055403610341600654420360025461045590919063ffffffff16565b9063ffffffff6104d116565b4260065590505b60008054600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b505050506040513d602081101561040057600080fd5b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60065481565b60035481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600082610464575060006104cb565b8282028284828161047157fe5b04146104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105f56021913960400191505060405180910390fd5b90505b92915050565b60006104c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610579578181015183820152602001610561565b50505050905090810190601f1680156105a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105c057fe5b049594505050505056fe54726561737572795665737465723a3a736574526563697069656e743a20756e617574686f72697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754726561737572795665737465723a3a636c61696d3a206e6f742074696d6520796574a265627a7a72315820b9382470bb8af267fe135bae65d43ec540b7eb889218f4b0851327c0eb2522cc64736f6c6343000510003254726561737572795665737465723a3a636f6e7374727563746f723a2076657374696e6720626567696e20746f6f206561726c7954726561737572795665737465723a3a636f6e7374727563746f723a20636c69666620697320746f6f206561726c7954726561737572795665737465723a3a636f6e7374727563746f723a20656e6420697320746f6f206561726c79",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100a25760003560e01c806384a1931f11610076578063e29bc68b1161005b578063e29bc68b1461013f578063edc9af9514610147578063f3640e741461014f576100a2565b806384a1931f1461012f578063c046371114610137576100a2565b8062728f76146100a75780633bbed4a0146100c15780634e71d92d146100f657806366d003ac146100fe575b600080fd5b6100af610157565b60408051918252519081900360200190f35b6100f4600480360360208110156100d757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661015d565b005b6100f4610214565b610106610405565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100af610421565b6100af610427565b6100af61042d565b610106610433565b6100af61044f565b60025481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806105cb602a913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045442101561026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806106166023913960400191505060405180910390fd5b6000600554421061031e57600054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b50519050610354565b61034d60035460055403610341600654420360025461045590919063ffffffff16565b9063ffffffff6104d116565b4260065590505b60008054600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b505050506040513d602081101561040057600080fd5b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60065481565b60035481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600082610464575060006104cb565b8282028284828161047157fe5b04146104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105f56021913960400191505060405180910390fd5b90505b92915050565b60006104c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610579578181015183820152602001610561565b50505050905090810190601f1680156105a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816105c057fe5b049594505050505056fe54726561737572795665737465723a3a736574526563697069656e743a20756e617574686f72697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754726561737572795665737465723a3a636c61696d3a206e6f742074696d6520796574a265627a7a72315820b9382470bb8af267fe135bae65d43ec540b7eb889218f4b0851327c0eb2522cc64736f6c63430005100032",
      "srcmap": "52:1649:5:-;;;316:735;8:9:-1;5:2;;;30:1;27;20:12;5:2;316:735:5;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;316:735:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;537:15;520:32;;;512:97;;;;-1:-1:-1;;;512:97:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:13;627;:30;;619:90;;;;-1:-1:-1;;;619:90:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;741:13;727:11;:27;719:85;;;;-1:-1:-1;;;719:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:3;:10;;-1:-1:-1;;;;;815:10:5;;;-1:-1:-1;;;;;;815:10:5;;;;;;;;835:22;;;;;;;;;;;;;;;868:13;:30;;;;908:12;:28;;;946:12;:28;;;;984:10;:24;1019:10;:25;52:1649;;;;;;",
      "srcmap-runtime": "52:1649:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52:1649:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167:25;;;:::i;:::-;;;;;;;;;;;;;;;;1057:176;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1057:176:5;;;;:::i;:::-;;1239:460;;;:::i;136:24::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;258:22;;;:::i;287:::-;;;:::i;198:24::-;;;:::i;112:18::-;;;:::i;228:24::-;;;:::i;167:25::-;;;;:::o;1057:176::-;1138:9;;;;1124:10;:23;1116:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1204:9;:22;;;;;;;;;;;;;;;1057:176::o;1239:460::-;1300:12;;1281:15;:31;;1273:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1362:11;1406:10;;1387:15;:29;1383:263;;1446:3;;1441:34;;;;;;1469:4;1441:34;;;;;;1446:3;;;;;1441:19;;:34;;;;;;;;;;;;;;;1446:3;1441:34;;;5:2:-1;;;;30:1;27;20:12;5:2;1441:34:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1441:34:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1441:34:5;;-1:-1:-1;1383:263:5;;;1515:78;1580:12;;1567:10;;:25;1515:47;1551:10;;1533:15;:28;1515:13;;:17;;:47;;;;:::i;:::-;:51;:78;:51;:78;:::i;:::-;1620:15;1607:10;:28;1506:87;-1:-1:-1;1383:263:5;1660:3;;;;1674:9;1655:37;;;;;;1660:3;1674:9;;;1655:37;;;;;;;;;;;;1660:3;;;;;1655:18;;:37;;;;;;;;;;;;;;;;;;1660:3;1655:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1655:37:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1655:37:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;1239:460:5:o;136:24::-;;;;;;:::o;258:22::-;;;;:::o;287:::-;;;;:::o;198:24::-;;;;:::o;112:18::-;;;;;;:::o;228:24::-;;;;:::o;2656:459:3:-;2714:7;2955:6;2951:45;;-1:-1:-1;2984:1:3;2977:8;;2951:45;3018:5;;;3022:1;3018;:5;:1;3041:5;;;;;:10;3033:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3107:1;-1:-1:-1;2656:459:3;;;;;:::o;4267:130::-;4325:7;4351:39;4355:1;4358;4351:39;;;;;;;;;;;;;;;;;4958:7;5058:12;5051:5;5043:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5043:28:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5081:9;5097:1;5093;:5;;;;;;;4872:338;-1:-1:-1;;;;;4872:338:3:o"
    },
    "contracts/Uni.sol:Uni": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "minter_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "mintingAllowedAfter_",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "fromDelegate",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "toDelegate",
              "type": "address"
            }
          ],
          "name": "DelegateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "delegate",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "previousBalance",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newBalance",
              "type": "uint256"
            }
          ],
          "name": "DelegateVotesChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "minter",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newMinter",
              "type": "address"
            }
          ],
          "name": "MinterChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "DELEGATION_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "DOMAIN_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rawAmount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "name": "checkpoints",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "fromBlock",
              "type": "uint32"
            },
            {
              "internalType": "uint96",
              "name": "votes",
              "type": "uint96"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            }
          ],
          "name": "delegate",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expiry",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "delegateBySig",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "delegates",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "getCurrentVotes",
          "outputs": [
            {
              "internalType": "uint96",
              "name": "",
              "type": "uint96"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "getPriorVotes",
          "outputs": [
            {
              "internalType": "uint96",
              "name": "",
              "type": "uint96"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "minimumTimeBetweenMints",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rawAmount",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "mintCap",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "minter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "mintingAllowedAfter",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "numCheckpoints",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rawAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "minter_",
              "type": "address"
            }
          ],
          "name": "setMinter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rawAmount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rawAmount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040526b033b2e3c9fd0803ce80000006000553480156200002157600080fd5b506040516200341338038062003413833981016040819052620000449162000171565b42811015620000705760405162461bcd60e51b8152600401620000679062000273565b60405180910390fd5b600080546001600160a01b0385168083526004602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000de919062000285565b60405180910390a3600180546001600160a01b0319166001600160a01b0384811691909117918290556040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6926200013d926000929116906200024d565b60405180910390a160025550620002ec9050565b80516200015e81620002c7565b92915050565b80516200015e81620002e1565b6000806000606084860312156200018757600080fd5b600062000195868662000151565b9350506020620001a88682870162000151565b9250506040620001bb8682870162000164565b9150509250925092565b620001d081620002b3565b82525050565b620001d0816200029e565b6000620001f060398362000295565b7f556e693a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e81527f6c7920626567696e206166746572206465706c6f796d656e7400000000000000602082015260400192915050565b620001d081620002b0565b604081016200025d8285620001c5565b6200026c6020830184620001d6565b9392505050565b602080825281016200015e81620001e1565b602081016200015e828462000242565b90815260200190565b60006001600160a01b0382166200015e565b90565b60006200015e8260006200015e826200029e565b620002d2816200029e565b8114620002de57600080fd5b50565b620002d281620002b0565b61311780620002fc6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461036b578063e7a324dc1461037e578063f1127ed814610386578063fca3b5aa146103a7576101b9565b8063b4b5ea5714610332578063c3cda52014610345578063d505accf14610358576101b9565b8063782d6fe1116100d3578063782d6fe1146102e45780637ecebe001461030457806395d89b4114610317578063a9059cbb1461031f576101b9565b80636fcfff45146102b657806370a08231146102c957806376c71ca1146102dc576101b9565b806330adf81f1161016657806340c10f191161014057806340c10f1914610266578063587cde1e1461027b5780635c11d62f1461028e5780635c19a95c146102a3576101b9565b806330adf81f1461024157806330b36cef14610249578063313ce56714610251576101b9565b806318160ddd1161019757806318160ddd1461021157806320606b701461022657806323b872dd1461022e576101b9565b806306fdde03146101be57806307546172146101dc578063095ea7b3146101f1575b600080fd5b6101c66103ba565b6040516101d39190612c72565b60405180910390f35b6101e46103f3565b6040516101d39190612b45565b6102046101ff3660046122aa565b61040f565b6040516101d39190612b6e565b610219610534565b6040516101d39190612b7c565b61021961053a565b61020461023c3660046121c1565b610551565b6102196106f5565b610219610701565b610259610707565b6040516101d39190612dac565b6102796102743660046122aa565b61070c565b005b6101e4610289366004612161565b6109fc565b610296610a24565b6040516101d39190612d83565b6102796102b1366004612161565b610a2c565b6102966102c4366004612161565b610a39565b6102196102d7366004612161565b610a51565b610259610a87565b6102f76102f23660046122aa565b610a8c565b6040516101d39190612dc8565b610219610312366004612161565b610d6e565b6101c6610d80565b61020461032d3660046122aa565b610db9565b6102f7610340366004612161565b610df5565b6102796103533660046122da565b610ea3565b61027961036636600461220e565b611128565b610219610379366004612187565b61155d565b6102196115a3565b610399610394366004612361565b6115af565b6040516101d3929190612d91565b6102796103b5366004612161565b6115ea565b6040518060400160405280600781526020017f556e69737761700000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561046157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610486565b61048383604051806060016040528060248152602001613082602491396116d6565b90505b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610520908590612dba565b60405180910390a360019150505b92915050565b60005481565b60405161054690612b2f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926105bb9288929190613082908301396116d6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060757506bffffffffffffffffffffffff82811614155b156106db57600061063183836040518060600160405280603c8152602001612f02603c9139611728565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600360209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d1908590612dba565b60405180910390a3505b6106e687878361178b565b600193505050505b9392505050565b60405161054690612b24565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d13565b60405180910390fd5b6002544210156107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cd3565b73ffffffffffffffffffffffffffffffffffffffff82166107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cc3565b6107fd426301e133806119f2565b600281905550600061082782604051806060016040528060218152602001613061602191396116d6565b905061084361083c600054600260ff16611a31565b6064611a85565b816bffffffffffffffffffffffff16111561088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d03565b6108c56108a7600054836bffffffffffffffffffffffff166119f2565b604051806060016040528060268152602001612f3e602691396116d6565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260248084526109299491909116928592909190612ede90830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff841660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109bd908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408120546109f7921683611b22565b505050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610a363382611d69565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b600281565b6000438210610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cb3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff1680610b0257600091505061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610bda5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015610c2257600091505061052e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610d1657600282820363ffffffff16048103610c7261211e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610cf15760200151945061052e9350505050565b805163ffffffff16871115610d0857819350610d0f565b6001820392505b5050610c48565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60086020526000908152604090205481565b6040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525081565b600080610dde8360405180606001604052806025815260200161303c602591396116d6565b9050610deb33858361178b565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff1680610e2d5760006106ee565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610eb190612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985610f18611e1d565b30604051602001610f2c9493929190612c22565b6040516020818303038152906040528051906020012090506000604051610f5290612b3a565b604051908190038120610f6d918a908a908a90602001612be4565b60405160208183030381529060405280519060200120905060008282604051602001610f9a929190612af3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610fd79493929190612c57565b6020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ca3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915589146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d33565b87421115611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c83565b61111b818b611d69565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561117957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61119e565b61119b86604051806060016040528060238152602001612f99602391396116d6565b90505b60006040516111ac90612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985611213611e1d565b306040516020016112279493929190612c22565b604051602081830303815290604052805190602001209050600060405161124d90612b24565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602090815292902080546001810190915561129c9391928e928e928e9290918e9101612b8a565b604051602081830303815290604052805190602001209050600082826040516020016112c9929190612af3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113069493929190612c57565b6020604051602081039080840390855afa158015611328573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d63565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d73565b8842111561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d53565b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516115479190612dba565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161054690612b3a565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff16331461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d23565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916116879173ffffffffffffffffffffffffffffffffffffffff909116908490612b53565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff83166117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d43565b73ffffffffffffffffffffffffffffffffffffffff8216611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ce3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526035808452611882936bffffffffffffffffffffffff9092169285929190612f6490830139611728565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f80845261191494919091169285929091906130a690830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ab908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546109f792918216911683611b22565b6000828201838110156106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c93565b600082611a405750600061052e565b82820282848281611a4d57fe5b04146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cf3565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e21565b6000838301826bffffffffffffffffffffffff8087169083161015611b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57506000816bffffffffffffffffffffffff16115b156109f75773ffffffffffffffffffffffffffffffffffffffff831615611c6f5773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081611bc6576000611c36565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c5d828560405180606001604052806027815260200161301560279139611728565b9050611c6b86848484611e72565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156109f75773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081611cc4576000611d34565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d5b8285604051806060016040528060268152602001612fbc60269139611ac7565b905061112085848484611e72565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611e17828483611b22565b50505050565b4690565b60008183611e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b506000838581611e6857fe5b0495945050505050565b6000611e9643604051806060016040528060338152602001612fe2603391396120dc565b905060008463ffffffff16118015611f0a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611fa95773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612085565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516120cd929190612dd6565b60405180910390a25050505050565b6000816401000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b604080518082019091526000808252602082015290565b803561052e81612eae565b803561052e81612ec2565b803561052e81612ecb565b803561052e81612ed4565b60006020828403121561217357600080fd5b600061217f8484612135565b949350505050565b6000806040838503121561219a57600080fd5b60006121a68585612135565b92505060206121b785828601612135565b9150509250929050565b6000806000606084860312156121d657600080fd5b60006121e28686612135565b93505060206121f386828701612135565b925050604061220486828701612140565b9150509250925092565b600080600080600080600060e0888a03121561222957600080fd5b60006122358a8a612135565b97505060206122468a828b01612135565b96505060406122578a828b01612140565b95505060606122688a828b01612140565b94505060806122798a828b01612156565b93505060a061228a8a828b01612140565b92505060c061229b8a828b01612140565b91505092959891949750929550565b600080604083850312156122bd57600080fd5b60006122c98585612135565b92505060206121b785828601612140565b60008060008060008060c087890312156122f357600080fd5b60006122ff8989612135565b965050602061231089828a01612140565b955050604061232189828a01612140565b945050606061233289828a01612156565b935050608061234389828a01612140565b92505060a061235489828a01612140565b9150509295509295509295565b6000806040838503121561237457600080fd5b60006123808585612135565b92505060206121b78582860161214b565b61239a81612e03565b82525050565b61239a81612e0e565b61239a81612e13565b61239a6123be82612e13565b612e13565b60006123ce82612df1565b6123d88185612df5565b93506123e8818560208601612e5a565b6123f181612e86565b9093019392505050565b6000612408602583612df5565b7f556e693a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612467600283612dfe565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124a0601b83612df5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124d9602583612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612538602683612df5565b7f556e693a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612597602e83612df5565b7f556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b60006125f6605283612dfe565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061267b602283612df5565b7f556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126da604383612dfe565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061275f603983612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006127be602183612df5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061281d601c83612df5565b7f556e693a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612856602383612df5565b7f556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006128b5603d83612df5565b7f556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612914602183612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612973603b83612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006129d2601e83612df5565b7f556e693a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612a0b603a83612dfe565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612a6a601e83612df5565b7f556e693a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000612aa3601983612df5565b7f556e693a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b61239a81612e2f565b61239a81612e38565b61239a81612e4f565b61239a81612e3e565b6000612afe8261245a565b9150612b0a82856123b2565b602082019150612b1a82846123b2565b5060200192915050565b600061052e826125e9565b600061052e826126cd565b600061052e826129fe565b6020810161052e8284612391565b60408101612b618285612391565b6106ee6020830184612391565b6020810161052e82846123a0565b6020810161052e82846123a9565b60c08101612b9882896123a9565b612ba56020830188612391565b612bb26040830187612391565b612bbf60608301866123a9565b612bcc60808301856123a9565b612bd960a08301846123a9565b979650505050505050565b60808101612bf282876123a9565b612bff6020830186612391565b612c0c60408301856123a9565b612c1960608301846123a9565b95945050505050565b60808101612c3082876123a9565b612c3d60208301866123a9565b612c4a60408301856123a9565b612c196060830184612391565b60808101612c6582876123a9565b612bff6020830186612ad8565b602080825281016106ee81846123c3565b6020808252810161052e816123fb565b6020808252810161052e81612493565b6020808252810161052e816124cc565b6020808252810161052e8161252b565b6020808252810161052e8161258a565b6020808252810161052e8161266e565b6020808252810161052e81612752565b6020808252810161052e816127b1565b6020808252810161052e81612810565b6020808252810161052e81612849565b6020808252810161052e816128a8565b6020808252810161052e81612907565b6020808252810161052e81612966565b6020808252810161052e816129c5565b6020808252810161052e81612a5d565b6020808252810161052e81612a96565b6020810161052e8284612acf565b60408101612d9f8285612acf565b6106ee6020830184612aea565b6020810161052e8284612ad8565b6020810161052e8284612ae1565b6020810161052e8284612aea565b60408101612de48285612ae1565b6106ee6020830184612ae1565b5190565b90815260200190565b919050565b600061052e82612e16565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061052e82612e3e565b60005b83811015612e75578181015183820152602001612e5d565b83811115611e175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612eb781612e03565b8114610a3657600080fd5b612eb781612e13565b612eb781612e2f565b612eb781612e3856fe556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a7231582068d42e51eae03f461fed8d2db904ba521e900521e0a2199b4a57d733502ad3da6c6578706572696d656e74616cf564736f6c63430005100040",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3413 CODESIZE SUB DUP1 PUSH3 0x3413 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x44 SWAP2 PUSH3 0x171 JUMP JUMPDEST TIMESTAMP DUP2 LT ISZERO PUSH3 0x70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x67 SWAP1 PUSH3 0x273 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP4 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 PUSH3 0xDE SWAP2 SWAP1 PUSH3 0x285 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x3B0007EB941CF645526CBB3A4FDAECDA9D28CE4843167D9263B536A1F1EDC0F6 SWAP3 PUSH3 0x13D SWAP3 PUSH1 0x0 SWAP3 SWAP2 AND SWAP1 PUSH3 0x24D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x2 SSTORE POP PUSH3 0x2EC SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x15E DUP2 PUSH3 0x2C7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x15E DUP2 PUSH3 0x2E1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x195 DUP7 DUP7 PUSH3 0x151 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x1A8 DUP7 DUP3 DUP8 ADD PUSH3 0x151 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x1BB DUP7 DUP3 DUP8 ADD PUSH3 0x164 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x1D0 DUP2 PUSH3 0x2B3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x1D0 DUP2 PUSH3 0x29E JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1F0 PUSH1 0x39 DUP4 PUSH3 0x295 JUMP JUMPDEST PUSH32 0x556E693A3A636F6E7374727563746F723A206D696E74696E672063616E206F6E DUP2 MSTORE PUSH32 0x6C7920626567696E206166746572206465706C6F796D656E7400000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1D0 DUP2 PUSH3 0x2B0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH3 0x25D DUP3 DUP6 PUSH3 0x1C5 JUMP JUMPDEST PUSH3 0x26C PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x1D6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x15E DUP2 PUSH3 0x1E1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH3 0x15E DUP3 DUP5 PUSH3 0x242 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x15E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15E DUP3 PUSH1 0x0 PUSH3 0x15E DUP3 PUSH3 0x29E JUMP JUMPDEST PUSH3 0x2D2 DUP2 PUSH3 0x29E JUMP JUMPDEST DUP2 EQ PUSH3 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x2D2 DUP2 PUSH3 0x2B0 JUMP JUMPDEST PUSH2 0x3117 DUP1 PUSH3 0x2FC 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 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FCFFF45 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x37E JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xFCA3B5AA EQ PUSH2 0x3A7 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x358 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x782D6FE1 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x31F JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x76C71CA1 EQ PUSH2 0x2DC JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x5C11D62F EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x2A3 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x30B36CEF EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x251 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x22E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x7546172 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1F1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E4 PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2B45 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2B6E JUMP JUMPDEST PUSH2 0x219 PUSH2 0x534 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2B7C JUMP JUMPDEST PUSH2 0x219 PUSH2 0x53A JUMP JUMPDEST PUSH2 0x204 PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x21C1 JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x701 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2DAC JUMP JUMPDEST PUSH2 0x279 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0x70C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E4 PUSH2 0x289 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x296 PUSH2 0xA24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2D83 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x2B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x296 PUSH2 0x2C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x2D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x259 PUSH2 0xA87 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2DC8 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0xD80 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x32D CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0xDB9 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x340 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x22DA JUMP JUMPDEST PUSH2 0xEA3 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x366 CALLDATASIZE PUSH1 0x4 PUSH2 0x220E JUMP JUMPDEST PUSH2 0x1128 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x379 CALLDATASIZE PUSH1 0x4 PUSH2 0x2187 JUMP JUMPDEST PUSH2 0x155D JUMP JUMPDEST PUSH2 0x219 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0x399 PUSH2 0x394 CALLDATASIZE PUSH1 0x4 PUSH2 0x2361 JUMP JUMPDEST PUSH2 0x15AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP3 SWAP2 SWAP1 PUSH2 0x2D91 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x15EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 EQ ISZERO PUSH2 0x461 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x486 JUMP JUMPDEST PUSH2 0x483 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3082 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x520 SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x546 SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP1 DUP5 MSTORE SWAP2 SWAP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x5BB SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x3082 SWAP1 DUP4 ADD CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 PUSH2 0x631 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2F02 PUSH1 0x3C SWAP2 CODECOPY PUSH2 0x1728 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x6D1 SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST PUSH2 0x6E6 DUP8 DUP8 DUP4 PUSH2 0x178B JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x546 SWAP1 PUSH2 0x2B24 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x766 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CD3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CC3 JUMP JUMPDEST PUSH2 0x7FD TIMESTAMP PUSH4 0x1E13380 PUSH2 0x19F2 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x827 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3061 PUSH1 0x21 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x843 PUSH2 0x83C PUSH1 0x0 SLOAD PUSH1 0x2 PUSH1 0xFF AND PUSH2 0x1A31 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x1A85 JUMP JUMPDEST DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x88A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D03 JUMP JUMPDEST PUSH2 0x8C5 PUSH2 0x8A7 PUSH1 0x0 SLOAD DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2F3E PUSH1 0x26 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP1 DUP5 MSTORE PUSH2 0x929 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2EDE SWAP1 DUP4 ADD CODECOPY PUSH2 0x1AC7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9BD SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x9F7 SWAP3 AND DUP4 PUSH2 0x1B22 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH2 0xA36 CALLER DUP3 PUSH2 0x1D69 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0xAC7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CB3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xB02 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x52E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xBDA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x52E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xC22 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x52E JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xC72 PUSH2 0x211E JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH5 0x100000000 SWAP1 SWAP4 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xCF1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x52E SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xD08 JUMPI DUP2 SWAP4 POP PUSH2 0xD0F JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xC48 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH5 0x100000000 SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E490000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDDE DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x303C PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP PUSH2 0xDEB CALLER DUP6 DUP4 PUSH2 0x178B JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xE2D JUMPI PUSH1 0x0 PUSH2 0x6EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xEB1 SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH32 0x556E697377617000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x99C45E8EE5DDE061CED9C812089094FBD28A020E7E37F2851198887E5CA64985 PUSH2 0xF18 PUSH2 0x1E1D JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xF52 SWAP1 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xF6D SWAP2 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x20 ADD PUSH2 0x2BE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF9A SWAP3 SWAP2 SWAP1 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFD7 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1071 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CA3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x10D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D33 JUMP JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x1111 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2C83 JUMP JUMPDEST PUSH2 0x111B DUP2 DUP12 PUSH2 0x1D69 JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 EQ ISZERO PUSH2 0x1179 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x119E JUMP JUMPDEST PUSH2 0x119B DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2F99 PUSH1 0x23 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x11AC SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH32 0x556E697377617000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x99C45E8EE5DDE061CED9C812089094FBD28A020E7E37F2851198887E5CA64985 PUSH2 0x1213 PUSH2 0x1E1D JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1227 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124D SWAP1 PUSH2 0x2B24 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH2 0x129C SWAP4 SWAP2 SWAP3 DUP15 SWAP3 DUP15 SWAP3 DUP15 SWAP3 SWAP1 SWAP2 DUP15 SWAP2 ADD PUSH2 0x2B8A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x12C9 SWAP3 SWAP2 SWAP1 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1306 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1328 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x13A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D63 JUMP JUMPDEST DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1405 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D73 JUMP JUMPDEST DUP9 TIMESTAMP GT ISZERO PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D53 JUMP JUMPDEST DUP5 PUSH1 0x3 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1547 SWAP2 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x546 SWAP1 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D23 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3B0007EB941CF645526CBB3A4FDAECDA9D28CE4843167D9263B536A1F1EDC0F6 SWAP2 PUSH2 0x1687 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH13 0x1000000000000000000000000 DUP5 LT PUSH2 0x1720 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO DUP3 SWAP1 PUSH2 0x1783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x17D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1825 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CE3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE PUSH2 0x1882 SWAP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 DUP6 SWAP3 SWAP2 SWAP1 PUSH2 0x2F64 SWAP1 DUP4 ADD CODECOPY PUSH2 0x1728 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND OR SWAP1 SSTORE SWAP3 DUP7 AND DUP3 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2F DUP1 DUP5 MSTORE PUSH2 0x1914 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x30A6 SWAP1 DUP4 ADD CODECOPY PUSH2 0x1AC7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x19AB SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x9F7 SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x1B22 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2C93 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1A40 JUMPI POP PUSH1 0x0 PUSH2 0x52E JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1A4D JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x6EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6EE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1E21 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x1B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x1B6C JUMPI POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x9F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0x1C6F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x1BC6 JUMPI PUSH1 0x0 PUSH2 0x1C36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C5D DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3015 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1728 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C6B DUP7 DUP5 DUP5 DUP5 PUSH2 0x1E72 JUMP JUMPDEST POP POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x9F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x1CC4 JUMPI PUSH1 0x0 PUSH2 0x1D34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D5B DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2FBC PUSH1 0x26 SWAP2 CODECOPY PUSH2 0x1AC7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1120 DUP6 DUP5 DUP5 DUP5 PUSH2 0x1E72 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x4 DUP5 MSTORE DUP3 DUP7 KECCAK256 SLOAD SWAP5 SWAP1 SWAP4 MSTORE DUP8 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP6 AND SWAP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 DUP6 SWAP3 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0x1E17 DUP3 DUP5 DUP4 PUSH2 0x1B22 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1E5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1E68 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E96 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2FE2 PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x20DC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x1F0A JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x1FA9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFF AND PUSH5 0x100000000 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x2085 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH5 0x100000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFF SWAP6 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x7 SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x20CD SWAP3 SWAP2 SWAP1 PUSH2 0x2DD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x1720 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2EAE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2EC2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2ECB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2ED4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x217F DUP5 DUP5 PUSH2 0x2135 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x219A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21A6 DUP6 DUP6 PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x21B7 DUP6 DUP3 DUP7 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21E2 DUP7 DUP7 PUSH2 0x2135 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x21F3 DUP7 DUP3 DUP8 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2204 DUP7 DUP3 DUP8 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2235 DUP11 DUP11 PUSH2 0x2135 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2246 DUP11 DUP3 DUP12 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2257 DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2268 DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2279 DUP11 DUP3 DUP12 ADD PUSH2 0x2156 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x228A DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x229B DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22C9 DUP6 DUP6 PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x21B7 DUP6 DUP3 DUP7 ADD PUSH2 0x2140 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x22F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22FF DUP10 DUP10 PUSH2 0x2135 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x2310 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x2321 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x2332 DUP10 DUP3 DUP11 ADD PUSH2 0x2156 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x2343 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x2354 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP6 DUP6 PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x21B7 DUP6 DUP3 DUP7 ADD PUSH2 0x214B JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E03 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E0E JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x239A PUSH2 0x23BE DUP3 PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x2E13 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23CE DUP3 PUSH2 0x2DF1 JUMP JUMPDEST PUSH2 0x23D8 DUP2 DUP6 PUSH2 0x2DF5 JUMP JUMPDEST SWAP4 POP PUSH2 0x23E8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2E5A JUMP JUMPDEST PUSH2 0x23F1 DUP2 PUSH2 0x2E86 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2408 PUSH1 0x25 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A64656C656761746542795369673A207369676E6174757265206578 DUP2 MSTORE PUSH32 0x7069726564000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2467 PUSH1 0x2 DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24A0 PUSH1 0x1B DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24D9 PUSH1 0x25 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A64656C656761746542795369673A20696E76616C6964207369676E DUP2 MSTORE PUSH32 0x6174757265000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2538 PUSH1 0x26 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6765745072696F72566F7465733A206E6F74207965742064657465 DUP2 MSTORE PUSH32 0x726D696E65640000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2597 PUSH1 0x2E DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A2063616E6E6F74207472616E7366657220746F207468 DUP2 MSTORE PUSH32 0x65207A65726F2061646472657373000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25F6 PUSH1 0x52 DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x5065726D69742861646472657373206F776E65722C6164647265737320737065 DUP2 MSTORE PUSH32 0x6E6465722C75696E743235362076616C75652C75696E74323536206E6F6E6365 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x2C75696E7432353620646561646C696E65290000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x52 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x267B PUSH1 0x22 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A206D696E74696E67206E6F7420616C6C6F7765642079 DUP2 MSTORE PUSH32 0x6574000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26DA PUSH1 0x43 DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6374290000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275F PUSH1 0x39 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A5F7472616E73666572546F6B656E733A2063616E6E6F7420747261 DUP2 MSTORE PUSH32 0x6E7366657220746F20746865207A65726F206164647265737300000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27BE PUSH1 0x21 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x281D PUSH1 0x1C DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A206578636565646564206D696E742063617000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2856 PUSH1 0x23 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A206F6E6C7920746865206D696E7465722063616E206D DUP2 MSTORE PUSH32 0x696E740000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B5 PUSH1 0x3D DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7365744D696E7465723A206F6E6C7920746865206D696E74657220 DUP2 MSTORE PUSH32 0x63616E206368616E676520746865206D696E7465722061646472657373000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2914 PUSH1 0x21 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A64656C656761746542795369673A20696E76616C6964206E6F6E63 DUP2 MSTORE PUSH32 0x6500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2973 PUSH1 0x3B DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A5F7472616E73666572546F6B656E733A2063616E6E6F7420747261 DUP2 MSTORE PUSH32 0x6E736665722066726F6D20746865207A65726F20616464726573730000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29D2 PUSH1 0x1E DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7065726D69743A207369676E617475726520657870697265640000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A0B PUSH1 0x3A DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206E6F6E63652C75696E743235362065787069727929000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3A ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A6A PUSH1 0x1E DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7065726D69743A20696E76616C6964207369676E61747572650000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA3 PUSH1 0x19 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7065726D69743A20756E617574686F72697A656400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E2F JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E4F JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AFE DUP3 PUSH2 0x245A JUMP JUMPDEST SWAP2 POP PUSH2 0x2B0A DUP3 DUP6 PUSH2 0x23B2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2B1A DUP3 DUP5 PUSH2 0x23B2 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x25E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x26CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x29FE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2391 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2B61 DUP3 DUP6 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x6EE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2391 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x23A0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x23A9 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x2B98 DUP3 DUP10 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BA5 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x2BB2 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x2BBF PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BCC PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BD9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x23A9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2BF2 DUP3 DUP8 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BFF PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x2C0C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C19 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x23A9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2C30 DUP3 DUP8 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C3D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C4A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C19 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2391 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2C65 DUP3 DUP8 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BFF PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x6EE DUP2 DUP5 PUSH2 0x23C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x23FB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2493 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x24CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x252B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x258A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x266E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2752 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x27B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2810 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2849 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x28A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2966 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2A5D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2ACF JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D9F DUP3 DUP6 PUSH2 0x2ACF JUMP JUMPDEST PUSH2 0x6EE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2AE1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2DE4 DUP3 DUP6 PUSH2 0x2AE1 JUMP JUMPDEST PUSH2 0x6EE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2AE1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x2E16 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x2E3E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E75 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E5D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1E17 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E03 JUMP JUMPDEST DUP2 EQ PUSH2 0xA36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E2F JUMP JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E38 JUMP INVALID SSTORE PUSH15 0x693A3A6D696E743A207472616E7366 PUSH6 0x7220616D6F75 PUSH15 0x74206F766572666C6F7773556E693A GASPRICE PUSH21 0x72616E7366657246726F6D3A207472616E73666572 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E742065786365656473207370656E64657220616C6C PUSH16 0x77616E6365556E693A3A6D696E743A20 PUSH21 0x6F74616C537570706C792065786365656473203936 KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A5F7472616E73666572546F6B PUSH6 0x6E733A207472 PUSH2 0x6E73 PUSH7 0x657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65556E69 GASPRICE GASPRICE PUSH17 0x65726D69743A20616D6F756E7420657863 PUSH6 0x656473203936 KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A5F6D6F7665566F7465733A20 PUSH23 0x6F746520616D6F756E74206F766572666C6F7773556E69 GASPRICE GASPRICE 0x5F PUSH24 0x72697465436865636B706F696E743A20626C6F636B206E75 PUSH14 0x6265722065786365656473203332 KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A5F6D6F7665566F7465733A20 PUSH23 0x6F746520616D6F756E7420756E646572666C6F7773556E PUSH10 0x3A3A7472616E73666572 GASPRICE KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732039362062697473556E693A GASPRICE PUSH14 0x696E743A20616D6F756E74206578 PUSH4 0x65656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A617070726F76653A20616D6F PUSH22 0x6E7420657863656564732039362062697473556E693A GASPRICE 0x5F PUSH21 0x72616E73666572546F6B656E733A207472616E7366 PUSH6 0x7220616D6F75 PUSH15 0x74206F766572666C6F7773A365627A PUSH27 0x7231582068D42E51EAE03F461FED8D2DB904BA521E900521E0A219 SWAP12 0x4A JUMPI 0xD7 CALLER POP 0x2A 0xD3 0xDA PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV LT STOP BLOCKHASH ",
          "sourceMap": "86:16763:6:-;;;470:16;444:42;;3465:439;8:9:-1;5:2;;;30:1;27;20:12;5:2;3465:439:6;;;;;;;;;;;;;;;;;;;;;3587:15;3563:20;:39;;3555:109;;;;-1:-1:-1;;;3555:109:6;;;;;;;;;;;;;;;;;3702:11;;;-1:-1:-1;;;;;3675:17:6;;;;;:8;:17;;;;;;:39;;-1:-1:-1;;;;;;3675:39:6;-1:-1:-1;;;;;3675:39:6;;;;;;;;;;3759:11;;3729:42;;3675:17;;3702:11;3729:42;;;;3759:11;3729:42;;;;;;;;;;3781:6;:16;;-1:-1:-1;;;;;;3781:16:6;-1:-1:-1;;;;;3781:16:6;;;;;;;;;;;3812:33;;;;;;-1:-1:-1;;3838:6:6;;;3812:33;;;;;;;;;;3855:19;:42;-1:-1:-1;86:16763:6;;-1:-1:-1;86:16763:6;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:134;224:13;;242:33;224:13;242:33;;287:535;;;;436:2;424:9;415:7;411:23;407:32;404:2;;;452:1;449;442:12;404:2;487:1;504:64;560:7;540:9;504:64;;;494:74;;466:108;605:2;623:64;679:7;670:6;659:9;655:22;623:64;;;613:74;;584:109;724:2;742:64;798:7;789:6;778:9;774:22;742:64;;;732:74;;703:109;398:424;;;;;;829:142;920:45;959:5;920:45;;;915:3;908:58;902:69;;;978:113;1061:24;1079:5;1061:24;;1099:394;;1259:67;1323:2;1318:3;1259:67;;;1359:34;1339:55;;1428:27;1423:2;1414:12;;1407:49;1484:2;1475:12;;1245:248;-1:-1;;1245:248;1501:113;1584:24;1602:5;1584:24;;1621:340;1775:2;1760:18;;1789:79;1764:9;1841:6;1789:79;;;1879:72;1947:2;1936:9;1932:18;1923:6;1879:72;;;1746:215;;;;;;1968:407;2159:2;2173:47;;;2144:18;;2234:131;2144:18;2234:131;;2382:213;2500:2;2485:18;;2514:71;2489:9;2558:6;2514:71;;2603:163;2706:19;;;2755:4;2746:14;;2699:67;2774:91;;-1:-1;;;;;2934:54;;2836:24;2917:76;3000:72;3062:5;3045:27;3079:129;;3166:37;3197:5;3215:121;3294:37;3325:5;3294:37;;3458:117;3527:24;3545:5;3527:24;;;3520:5;3517:35;3507:2;;3566:1;3563;3556:12;3507:2;3501:74;;3582:117;3651:24;3669:5;3651:24;;3625:74;86:16763:6;;;;;;"
        },
        "deployedBytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461036b578063e7a324dc1461037e578063f1127ed814610386578063fca3b5aa146103a7576101b9565b8063b4b5ea5714610332578063c3cda52014610345578063d505accf14610358576101b9565b8063782d6fe1116100d3578063782d6fe1146102e45780637ecebe001461030457806395d89b4114610317578063a9059cbb1461031f576101b9565b80636fcfff45146102b657806370a08231146102c957806376c71ca1146102dc576101b9565b806330adf81f1161016657806340c10f191161014057806340c10f1914610266578063587cde1e1461027b5780635c11d62f1461028e5780635c19a95c146102a3576101b9565b806330adf81f1461024157806330b36cef14610249578063313ce56714610251576101b9565b806318160ddd1161019757806318160ddd1461021157806320606b701461022657806323b872dd1461022e576101b9565b806306fdde03146101be57806307546172146101dc578063095ea7b3146101f1575b600080fd5b6101c66103ba565b6040516101d39190612c72565b60405180910390f35b6101e46103f3565b6040516101d39190612b45565b6102046101ff3660046122aa565b61040f565b6040516101d39190612b6e565b610219610534565b6040516101d39190612b7c565b61021961053a565b61020461023c3660046121c1565b610551565b6102196106f5565b610219610701565b610259610707565b6040516101d39190612dac565b6102796102743660046122aa565b61070c565b005b6101e4610289366004612161565b6109fc565b610296610a24565b6040516101d39190612d83565b6102796102b1366004612161565b610a2c565b6102966102c4366004612161565b610a39565b6102196102d7366004612161565b610a51565b610259610a87565b6102f76102f23660046122aa565b610a8c565b6040516101d39190612dc8565b610219610312366004612161565b610d6e565b6101c6610d80565b61020461032d3660046122aa565b610db9565b6102f7610340366004612161565b610df5565b6102796103533660046122da565b610ea3565b61027961036636600461220e565b611128565b610219610379366004612187565b61155d565b6102196115a3565b610399610394366004612361565b6115af565b6040516101d3929190612d91565b6102796103b5366004612161565b6115ea565b6040518060400160405280600781526020017f556e69737761700000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561046157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610486565b61048383604051806060016040528060248152602001613082602491396116d6565b90505b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610520908590612dba565b60405180910390a360019150505b92915050565b60005481565b60405161054690612b2f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926105bb9288929190613082908301396116d6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060757506bffffffffffffffffffffffff82811614155b156106db57600061063183836040518060600160405280603c8152602001612f02603c9139611728565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600360209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d1908590612dba565b60405180910390a3505b6106e687878361178b565b600193505050505b9392505050565b60405161054690612b24565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d13565b60405180910390fd5b6002544210156107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cd3565b73ffffffffffffffffffffffffffffffffffffffff82166107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cc3565b6107fd426301e133806119f2565b600281905550600061082782604051806060016040528060218152602001613061602191396116d6565b905061084361083c600054600260ff16611a31565b6064611a85565b816bffffffffffffffffffffffff16111561088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d03565b6108c56108a7600054836bffffffffffffffffffffffff166119f2565b604051806060016040528060268152602001612f3e602691396116d6565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260248084526109299491909116928592909190612ede90830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff841660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109bd908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408120546109f7921683611b22565b505050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610a363382611d69565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b600281565b6000438210610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cb3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff1680610b0257600091505061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610bda5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015610c2257600091505061052e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610d1657600282820363ffffffff16048103610c7261211e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610cf15760200151945061052e9350505050565b805163ffffffff16871115610d0857819350610d0f565b6001820392505b5050610c48565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60086020526000908152604090205481565b6040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525081565b600080610dde8360405180606001604052806025815260200161303c602591396116d6565b9050610deb33858361178b565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff1680610e2d5760006106ee565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610eb190612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985610f18611e1d565b30604051602001610f2c9493929190612c22565b6040516020818303038152906040528051906020012090506000604051610f5290612b3a565b604051908190038120610f6d918a908a908a90602001612be4565b60405160208183030381529060405280519060200120905060008282604051602001610f9a929190612af3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610fd79493929190612c57565b6020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ca3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915589146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d33565b87421115611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c83565b61111b818b611d69565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561117957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61119e565b61119b86604051806060016040528060238152602001612f99602391396116d6565b90505b60006040516111ac90612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985611213611e1d565b306040516020016112279493929190612c22565b604051602081830303815290604052805190602001209050600060405161124d90612b24565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602090815292902080546001810190915561129c9391928e928e928e9290918e9101612b8a565b604051602081830303815290604052805190602001209050600082826040516020016112c9929190612af3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113069493929190612c57565b6020604051602081039080840390855afa158015611328573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d63565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d73565b8842111561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d53565b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516115479190612dba565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161054690612b3a565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff16331461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d23565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916116879173ffffffffffffffffffffffffffffffffffffffff909116908490612b53565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff83166117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d43565b73ffffffffffffffffffffffffffffffffffffffff8216611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ce3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526035808452611882936bffffffffffffffffffffffff9092169285929190612f6490830139611728565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f80845261191494919091169285929091906130a690830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ab908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546109f792918216911683611b22565b6000828201838110156106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c93565b600082611a405750600061052e565b82820282848281611a4d57fe5b04146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cf3565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e21565b6000838301826bffffffffffffffffffffffff8087169083161015611b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57506000816bffffffffffffffffffffffff16115b156109f75773ffffffffffffffffffffffffffffffffffffffff831615611c6f5773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081611bc6576000611c36565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c5d828560405180606001604052806027815260200161301560279139611728565b9050611c6b86848484611e72565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156109f75773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081611cc4576000611d34565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d5b8285604051806060016040528060268152602001612fbc60269139611ac7565b905061112085848484611e72565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611e17828483611b22565b50505050565b4690565b60008183611e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b506000838581611e6857fe5b0495945050505050565b6000611e9643604051806060016040528060338152602001612fe2603391396120dc565b905060008463ffffffff16118015611f0a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611fa95773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612085565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516120cd929190612dd6565b60405180910390a25050505050565b6000816401000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b604080518082019091526000808252602082015290565b803561052e81612eae565b803561052e81612ec2565b803561052e81612ecb565b803561052e81612ed4565b60006020828403121561217357600080fd5b600061217f8484612135565b949350505050565b6000806040838503121561219a57600080fd5b60006121a68585612135565b92505060206121b785828601612135565b9150509250929050565b6000806000606084860312156121d657600080fd5b60006121e28686612135565b93505060206121f386828701612135565b925050604061220486828701612140565b9150509250925092565b600080600080600080600060e0888a03121561222957600080fd5b60006122358a8a612135565b97505060206122468a828b01612135565b96505060406122578a828b01612140565b95505060606122688a828b01612140565b94505060806122798a828b01612156565b93505060a061228a8a828b01612140565b92505060c061229b8a828b01612140565b91505092959891949750929550565b600080604083850312156122bd57600080fd5b60006122c98585612135565b92505060206121b785828601612140565b60008060008060008060c087890312156122f357600080fd5b60006122ff8989612135565b965050602061231089828a01612140565b955050604061232189828a01612140565b945050606061233289828a01612156565b935050608061234389828a01612140565b92505060a061235489828a01612140565b9150509295509295509295565b6000806040838503121561237457600080fd5b60006123808585612135565b92505060206121b78582860161214b565b61239a81612e03565b82525050565b61239a81612e0e565b61239a81612e13565b61239a6123be82612e13565b612e13565b60006123ce82612df1565b6123d88185612df5565b93506123e8818560208601612e5a565b6123f181612e86565b9093019392505050565b6000612408602583612df5565b7f556e693a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612467600283612dfe565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124a0601b83612df5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124d9602583612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612538602683612df5565b7f556e693a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612597602e83612df5565b7f556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b60006125f6605283612dfe565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061267b602283612df5565b7f556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126da604383612dfe565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061275f603983612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006127be602183612df5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061281d601c83612df5565b7f556e693a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612856602383612df5565b7f556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006128b5603d83612df5565b7f556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612914602183612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612973603b83612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006129d2601e83612df5565b7f556e693a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612a0b603a83612dfe565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612a6a601e83612df5565b7f556e693a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000612aa3601983612df5565b7f556e693a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b61239a81612e2f565b61239a81612e38565b61239a81612e4f565b61239a81612e3e565b6000612afe8261245a565b9150612b0a82856123b2565b602082019150612b1a82846123b2565b5060200192915050565b600061052e826125e9565b600061052e826126cd565b600061052e826129fe565b6020810161052e8284612391565b60408101612b618285612391565b6106ee6020830184612391565b6020810161052e82846123a0565b6020810161052e82846123a9565b60c08101612b9882896123a9565b612ba56020830188612391565b612bb26040830187612391565b612bbf60608301866123a9565b612bcc60808301856123a9565b612bd960a08301846123a9565b979650505050505050565b60808101612bf282876123a9565b612bff6020830186612391565b612c0c60408301856123a9565b612c1960608301846123a9565b95945050505050565b60808101612c3082876123a9565b612c3d60208301866123a9565b612c4a60408301856123a9565b612c196060830184612391565b60808101612c6582876123a9565b612bff6020830186612ad8565b602080825281016106ee81846123c3565b6020808252810161052e816123fb565b6020808252810161052e81612493565b6020808252810161052e816124cc565b6020808252810161052e8161252b565b6020808252810161052e8161258a565b6020808252810161052e8161266e565b6020808252810161052e81612752565b6020808252810161052e816127b1565b6020808252810161052e81612810565b6020808252810161052e81612849565b6020808252810161052e816128a8565b6020808252810161052e81612907565b6020808252810161052e81612966565b6020808252810161052e816129c5565b6020808252810161052e81612a5d565b6020808252810161052e81612a96565b6020810161052e8284612acf565b60408101612d9f8285612acf565b6106ee6020830184612aea565b6020810161052e8284612ad8565b6020810161052e8284612ae1565b6020810161052e8284612aea565b60408101612de48285612ae1565b6106ee6020830184612ae1565b5190565b90815260200190565b919050565b600061052e82612e16565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061052e82612e3e565b60005b83811015612e75578181015183820152602001612e5d565b83811115611e175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612eb781612e03565b8114610a3657600080fd5b612eb781612e13565b612eb781612e2f565b612eb781612e3856fe556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a7231582068d42e51eae03f461fed8d2db904ba521e900521e0a2199b4a57d733502ad3da6c6578706572696d656e74616cf564736f6c63430005100040",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FCFFF45 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x37E JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xFCA3B5AA EQ PUSH2 0x3A7 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x358 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x782D6FE1 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x31F JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x76C71CA1 EQ PUSH2 0x2DC JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x5C11D62F EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x2A3 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x30B36CEF EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x251 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x22E JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x7546172 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1F1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E4 PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2B45 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2B6E JUMP JUMPDEST PUSH2 0x219 PUSH2 0x534 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2B7C JUMP JUMPDEST PUSH2 0x219 PUSH2 0x53A JUMP JUMPDEST PUSH2 0x204 PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x21C1 JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x701 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2DAC JUMP JUMPDEST PUSH2 0x279 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0x70C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E4 PUSH2 0x289 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x296 PUSH2 0xA24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2D83 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x2B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x296 PUSH2 0x2C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x2D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x259 PUSH2 0xA87 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0x2DC8 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0xD80 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x32D CALLDATASIZE PUSH1 0x4 PUSH2 0x22AA JUMP JUMPDEST PUSH2 0xDB9 JUMP JUMPDEST PUSH2 0x2F7 PUSH2 0x340 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0xDF5 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x22DA JUMP JUMPDEST PUSH2 0xEA3 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x366 CALLDATASIZE PUSH1 0x4 PUSH2 0x220E JUMP JUMPDEST PUSH2 0x1128 JUMP JUMPDEST PUSH2 0x219 PUSH2 0x379 CALLDATASIZE PUSH1 0x4 PUSH2 0x2187 JUMP JUMPDEST PUSH2 0x155D JUMP JUMPDEST PUSH2 0x219 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0x399 PUSH2 0x394 CALLDATASIZE PUSH1 0x4 PUSH2 0x2361 JUMP JUMPDEST PUSH2 0x15AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D3 SWAP3 SWAP2 SWAP1 PUSH2 0x2D91 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x15EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 EQ ISZERO PUSH2 0x461 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x486 JUMP JUMPDEST PUSH2 0x483 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3082 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x520 SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x546 SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP1 DUP5 MSTORE SWAP2 SWAP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x5BB SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x3082 SWAP1 DUP4 ADD CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 PUSH2 0x631 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2F02 PUSH1 0x3C SWAP2 CODECOPY PUSH2 0x1728 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x6D1 SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST PUSH2 0x6E6 DUP8 DUP8 DUP4 PUSH2 0x178B JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x546 SWAP1 PUSH2 0x2B24 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x766 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CD3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CC3 JUMP JUMPDEST PUSH2 0x7FD TIMESTAMP PUSH4 0x1E13380 PUSH2 0x19F2 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x827 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3061 PUSH1 0x21 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x843 PUSH2 0x83C PUSH1 0x0 SLOAD PUSH1 0x2 PUSH1 0xFF AND PUSH2 0x1A31 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x1A85 JUMP JUMPDEST DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x88A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D03 JUMP JUMPDEST PUSH2 0x8C5 PUSH2 0x8A7 PUSH1 0x0 SLOAD DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2F3E PUSH1 0x26 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP1 DUP5 MSTORE PUSH2 0x929 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2EDE SWAP1 DUP4 ADD CODECOPY PUSH2 0x1AC7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9BD SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x9F7 SWAP3 AND DUP4 PUSH2 0x1B22 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH4 0x1E13380 DUP2 JUMP JUMPDEST PUSH2 0xA36 CALLER DUP3 PUSH2 0x1D69 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0xAC7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CB3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xB02 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x52E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xBDA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x52E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xC22 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x52E JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xC72 PUSH2 0x211E JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH5 0x100000000 SWAP1 SWAP4 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xCF1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x52E SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xD08 JUMPI DUP2 SWAP4 POP PUSH2 0xD0F JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xC48 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH5 0x100000000 SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E490000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDDE DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x303C PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP PUSH2 0xDEB CALLER DUP6 DUP4 PUSH2 0x178B JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xE2D JUMPI PUSH1 0x0 PUSH2 0x6EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xEB1 SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH32 0x556E697377617000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x99C45E8EE5DDE061CED9C812089094FBD28A020E7E37F2851198887E5CA64985 PUSH2 0xF18 PUSH2 0x1E1D JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xF52 SWAP1 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xF6D SWAP2 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x20 ADD PUSH2 0x2BE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF9A SWAP3 SWAP2 SWAP1 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFD7 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1071 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CA3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x10D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D33 JUMP JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x1111 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2C83 JUMP JUMPDEST PUSH2 0x111B DUP2 DUP12 PUSH2 0x1D69 JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 EQ ISZERO PUSH2 0x1179 JUMPI POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x119E JUMP JUMPDEST PUSH2 0x119B DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2F99 PUSH1 0x23 SWAP2 CODECOPY PUSH2 0x16D6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x11AC SWAP1 PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH32 0x556E697377617000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x99C45E8EE5DDE061CED9C812089094FBD28A020E7E37F2851198887E5CA64985 PUSH2 0x1213 PUSH2 0x1E1D JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1227 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124D SWAP1 PUSH2 0x2B24 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH2 0x129C SWAP4 SWAP2 SWAP3 DUP15 SWAP3 DUP15 SWAP3 DUP15 SWAP3 SWAP1 SWAP2 DUP15 SWAP2 ADD PUSH2 0x2B8A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x12C9 SWAP3 SWAP2 SWAP1 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1306 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1328 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x13A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D63 JUMP JUMPDEST DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1405 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D73 JUMP JUMPDEST DUP9 TIMESTAMP GT ISZERO PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D53 JUMP JUMPDEST DUP5 PUSH1 0x3 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1547 SWAP2 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x546 SWAP1 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D23 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3B0007EB941CF645526CBB3A4FDAECDA9D28CE4843167D9263B536A1F1EDC0F6 SWAP2 PUSH2 0x1687 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH13 0x1000000000000000000000000 DUP5 LT PUSH2 0x1720 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO DUP3 SWAP1 PUSH2 0x1783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x17D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2D43 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1825 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CE3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE PUSH2 0x1882 SWAP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 DUP6 SWAP3 SWAP2 SWAP1 PUSH2 0x2F64 SWAP1 DUP4 ADD CODECOPY PUSH2 0x1728 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 AND OR SWAP1 SSTORE SWAP3 DUP7 AND DUP3 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2F DUP1 DUP5 MSTORE PUSH2 0x1914 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x30A6 SWAP1 DUP4 ADD CODECOPY PUSH2 0x1AC7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x19AB SWAP1 DUP6 SWAP1 PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x9F7 SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x1B22 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2C93 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1A40 JUMPI POP PUSH1 0x0 PUSH2 0x52E JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1A4D JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x6EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP1 PUSH2 0x2CF3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6EE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1E21 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x1B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x1B6C JUMPI POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x9F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0x1C6F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x1BC6 JUMPI PUSH1 0x0 PUSH2 0x1C36 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C5D DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3015 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1728 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C6B DUP7 DUP5 DUP5 DUP5 PUSH2 0x1E72 JUMP JUMPDEST POP POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x9F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x1CC4 JUMPI PUSH1 0x0 PUSH2 0x1D34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D5B DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2FBC PUSH1 0x26 SWAP2 CODECOPY PUSH2 0x1AC7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1120 DUP6 DUP5 DUP5 DUP5 PUSH2 0x1E72 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x4 DUP5 MSTORE DUP3 DUP7 KECCAK256 SLOAD SWAP5 SWAP1 SWAP4 MSTORE DUP8 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP6 AND SWAP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 DUP6 SWAP3 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0x1E17 DUP3 DUP5 DUP4 PUSH2 0x1B22 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1E5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1E68 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E96 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2FE2 PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x20DC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x1F0A JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x1FA9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFF AND PUSH5 0x100000000 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x2085 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH5 0x100000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFF SWAP6 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x7 SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x20CD SWAP3 SWAP2 SWAP1 PUSH2 0x2DD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x1720 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2EAE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2EC2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2ECB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x52E DUP2 PUSH2 0x2ED4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x217F DUP5 DUP5 PUSH2 0x2135 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x219A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21A6 DUP6 DUP6 PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x21B7 DUP6 DUP3 DUP7 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21E2 DUP7 DUP7 PUSH2 0x2135 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x21F3 DUP7 DUP3 DUP8 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2204 DUP7 DUP3 DUP8 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2235 DUP11 DUP11 PUSH2 0x2135 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2246 DUP11 DUP3 DUP12 ADD PUSH2 0x2135 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2257 DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2268 DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2279 DUP11 DUP3 DUP12 ADD PUSH2 0x2156 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x228A DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x229B DUP11 DUP3 DUP12 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22C9 DUP6 DUP6 PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x21B7 DUP6 DUP3 DUP7 ADD PUSH2 0x2140 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x22F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22FF DUP10 DUP10 PUSH2 0x2135 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x2310 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x2321 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x2332 DUP10 DUP3 DUP11 ADD PUSH2 0x2156 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x2343 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x2354 DUP10 DUP3 DUP11 ADD PUSH2 0x2140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP6 DUP6 PUSH2 0x2135 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x21B7 DUP6 DUP3 DUP7 ADD PUSH2 0x214B JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E03 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E0E JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x239A PUSH2 0x23BE DUP3 PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x2E13 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23CE DUP3 PUSH2 0x2DF1 JUMP JUMPDEST PUSH2 0x23D8 DUP2 DUP6 PUSH2 0x2DF5 JUMP JUMPDEST SWAP4 POP PUSH2 0x23E8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2E5A JUMP JUMPDEST PUSH2 0x23F1 DUP2 PUSH2 0x2E86 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2408 PUSH1 0x25 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A64656C656761746542795369673A207369676E6174757265206578 DUP2 MSTORE PUSH32 0x7069726564000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2467 PUSH1 0x2 DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24A0 PUSH1 0x1B DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24D9 PUSH1 0x25 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A64656C656761746542795369673A20696E76616C6964207369676E DUP2 MSTORE PUSH32 0x6174757265000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2538 PUSH1 0x26 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6765745072696F72566F7465733A206E6F74207965742064657465 DUP2 MSTORE PUSH32 0x726D696E65640000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2597 PUSH1 0x2E DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A2063616E6E6F74207472616E7366657220746F207468 DUP2 MSTORE PUSH32 0x65207A65726F2061646472657373000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25F6 PUSH1 0x52 DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x5065726D69742861646472657373206F776E65722C6164647265737320737065 DUP2 MSTORE PUSH32 0x6E6465722C75696E743235362076616C75652C75696E74323536206E6F6E6365 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x2C75696E7432353620646561646C696E65290000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x52 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x267B PUSH1 0x22 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A206D696E74696E67206E6F7420616C6C6F7765642079 DUP2 MSTORE PUSH32 0x6574000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26DA PUSH1 0x43 DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6374290000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275F PUSH1 0x39 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A5F7472616E73666572546F6B656E733A2063616E6E6F7420747261 DUP2 MSTORE PUSH32 0x6E7366657220746F20746865207A65726F206164647265737300000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27BE PUSH1 0x21 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x281D PUSH1 0x1C DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A206578636565646564206D696E742063617000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2856 PUSH1 0x23 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A6D696E743A206F6E6C7920746865206D696E7465722063616E206D DUP2 MSTORE PUSH32 0x696E740000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B5 PUSH1 0x3D DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7365744D696E7465723A206F6E6C7920746865206D696E74657220 DUP2 MSTORE PUSH32 0x63616E206368616E676520746865206D696E7465722061646472657373000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2914 PUSH1 0x21 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A64656C656761746542795369673A20696E76616C6964206E6F6E63 DUP2 MSTORE PUSH32 0x6500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2973 PUSH1 0x3B DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A5F7472616E73666572546F6B656E733A2063616E6E6F7420747261 DUP2 MSTORE PUSH32 0x6E736665722066726F6D20746865207A65726F20616464726573730000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29D2 PUSH1 0x1E DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7065726D69743A207369676E617475726520657870697265640000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A0B PUSH1 0x3A DUP4 PUSH2 0x2DFE JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206E6F6E63652C75696E743235362065787069727929000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3A ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A6A PUSH1 0x1E DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7065726D69743A20696E76616C6964207369676E61747572650000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA3 PUSH1 0x19 DUP4 PUSH2 0x2DF5 JUMP JUMPDEST PUSH32 0x556E693A3A7065726D69743A20756E617574686F72697A656400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E2F JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E4F JUMP JUMPDEST PUSH2 0x239A DUP2 PUSH2 0x2E3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AFE DUP3 PUSH2 0x245A JUMP JUMPDEST SWAP2 POP PUSH2 0x2B0A DUP3 DUP6 PUSH2 0x23B2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2B1A DUP3 DUP5 PUSH2 0x23B2 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x25E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x26CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x29FE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2391 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2B61 DUP3 DUP6 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x6EE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2391 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x23A0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x23A9 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x2B98 DUP3 DUP10 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BA5 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x2BB2 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x2BBF PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BCC PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BD9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x23A9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2BF2 DUP3 DUP8 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BFF PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0x2C0C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C19 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x23A9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2C30 DUP3 DUP8 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C3D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C4A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2C19 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2391 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2C65 DUP3 DUP8 PUSH2 0x23A9 JUMP JUMPDEST PUSH2 0x2BFF PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x6EE DUP2 DUP5 PUSH2 0x23C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x23FB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2493 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x24CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x252B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x258A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x266E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2752 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x27B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2810 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2849 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x28A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2966 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x29C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2A5D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x52E DUP2 PUSH2 0x2A96 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2ACF JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2D9F DUP3 DUP6 PUSH2 0x2ACF JUMP JUMPDEST PUSH2 0x6EE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2AE1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x52E DUP3 DUP5 PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2DE4 DUP3 DUP6 PUSH2 0x2AE1 JUMP JUMPDEST PUSH2 0x6EE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2AE1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x2E16 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52E DUP3 PUSH2 0x2E3E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E75 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E5D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1E17 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E03 JUMP JUMPDEST DUP2 EQ PUSH2 0xA36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E2F JUMP JUMPDEST PUSH2 0x2EB7 DUP2 PUSH2 0x2E38 JUMP INVALID SSTORE PUSH15 0x693A3A6D696E743A207472616E7366 PUSH6 0x7220616D6F75 PUSH15 0x74206F766572666C6F7773556E693A GASPRICE PUSH21 0x72616E7366657246726F6D3A207472616E73666572 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E742065786365656473207370656E64657220616C6C PUSH16 0x77616E6365556E693A3A6D696E743A20 PUSH21 0x6F74616C537570706C792065786365656473203936 KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A5F7472616E73666572546F6B PUSH6 0x6E733A207472 PUSH2 0x6E73 PUSH7 0x657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65556E69 GASPRICE GASPRICE PUSH17 0x65726D69743A20616D6F756E7420657863 PUSH6 0x656473203936 KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A5F6D6F7665566F7465733A20 PUSH23 0x6F746520616D6F756E74206F766572666C6F7773556E69 GASPRICE GASPRICE 0x5F PUSH24 0x72697465436865636B706F696E743A20626C6F636B206E75 PUSH14 0x6265722065786365656473203332 KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A5F6D6F7665566F7465733A20 PUSH23 0x6F746520616D6F756E7420756E646572666C6F7773556E PUSH10 0x3A3A7472616E73666572 GASPRICE KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732039362062697473556E693A GASPRICE PUSH14 0x696E743A20616D6F756E74206578 PUSH4 0x65656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 SSTORE PUSH15 0x693A3A617070726F76653A20616D6F PUSH22 0x6E7420657863656564732039362062697473556E693A GASPRICE 0x5F PUSH21 0x72616E73666572546F6B656E733A207472616E7366 PUSH6 0x7220616D6F75 PUSH15 0x74206F766572666C6F7773A365627A PUSH27 0x7231582068D42E51EAE03F461FED8D2DB904BA521E900521E0A219 SWAP12 0x4A JUMPI 0xD7 CALLER POP 0x2A 0xD3 0xDA PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV LT STOP BLOCKHASH ",
          "sourceMap": "86:16763:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;86:16763:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:39;;;:::i;:::-;;;;;;;;;;;;;;;;560:21;;;:::i;:::-;;;;;;;;6351:406;;;;;;;;;:::i;:::-;;;;;;;;444:42;;;:::i;:::-;;;;;;;;1756:122;;;:::i;9358:656::-;;;;;;;;;:::i;2173:137::-;;;:::i;648:31::-;;;:::i;348:35::-;;;:::i;:::-;;;;;;;;4414:1039;;;;;;;;;:::i;:::-;;1221:45;;;;;;;;;:::i;729:61::-;;;:::i;:::-;;;;;;;;10156:100;;;;;;;;;:::i;1637:49::-;;;;;;;;;:::i;8462:106::-;;;;;;;;;:::i;882:33::-;;;:::i;12291:1185::-;;;;;;;;;:::i;:::-;;;;;;;;2388:39;;;;;;;;;:::i;251:37::-;;;:::i;8824:233::-;;;;;;;;;:::i;11650:219::-;;;;;;;;;:::i;10679:777::-;;;;;;;;;:::i;7235:1031::-;;;;;;;;;:::i;5749:134::-;;;;;;;;;:::i;1969:117::-;;;:::i;1501:70::-;;;;;;;;;:::i;:::-;;;;;;;;;4019:227;;;;;;;;;:::i;154:39::-;;;;;;;;;;;;;;;;;;;:::o;560:21::-;;;;;;:::o;6351:406::-;6419:4;6435:13;6480:2;6462:9;:21;6458:168;;;-1:-1:-1;6515:2:6;6458:168;;;6558:57;6565:9;6558:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;6549:66;;6458:168;6647:10;6636:22;;;;:10;:22;;;;;;;;;:31;;;;;;;;;;;:40;;;;;;;;;;6692:37;;6636:31;;6647:10;6692:37;;;;6636:40;;6692:37;;;;;;;;;;6746:4;6739:11;;;6351:406;;;;;:::o;444:42::-;;;;:::o;1756:122::-;1798:80;;;;;;;;;;;;;;1756:122;:::o;9358:656::-;9520:15;;;9440:4;9520:15;;;:10;:15;;;;;;;;9474:10;9520:24;;;;;;;;;;9570:57;;;;;;;;;;;;9474:10;;9520:24;;;;;9440:4;;9570:57;;9577:9;;9570:57;;;;;;;:6;:57::i;:::-;9554:73;;9653:3;9642:14;;:7;:14;;;;:48;;;;-1:-1:-1;9660:30:6;;;;;;9642:48;9638:305;;;9706:19;9728:95;9734:16;9752:6;9728:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;9837:15;;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;;;;;;;;9896:36;9837:39;;-1:-1:-1;9837:24:6;;9896:36;;;;9837:39;;9896:36;;;;;;;;;;9638:305;;9953:33;9969:3;9974;9979:6;9953:15;:33::i;:::-;10003:4;9996:11;;;;;9358:656;;;;;;:::o;2173:137::-;2215:95;;;;;;648:31;;;;:::o;348:35::-;381:2;348:35;:::o;4414:1039::-;4498:6;;;;4484:10;:20;4476:68;;;;;;;;;;;;;;;;;;;;;;4581:19;;4562:15;:38;;4554:85;;;;;;;;;;;;;;4657:17;;;4649:76;;;;;;;;;;;;;;4785:54;4798:15;778:12;4785;:54::i;:::-;4763:19;:76;;;;4877:13;4893:54;4900:9;4893:54;;;;;;;;;;;;;;;;;:6;:54::i;:::-;4877:70;;4975:53;4988:34;5001:11;;914:1;4988:34;;:12;:34::i;:::-;5024:3;4975:12;:53::i;:::-;4965:6;:63;;;;4957:104;;;;;;;;;;;;;;5085:83;5092:33;5105:11;;5118:6;5092:33;;:12;:33::i;:::-;5085:83;;;;;;;;;;;;;;;;;:6;:83::i;:::-;5071:97;;;;:11;:97;;;5249:13;;;;;:8;:13;;;;;;;;;;5243:68;;;;;;;;;;;;;;5249:13;;;;;5264:6;;5243:68;;;;;;;;:5;:68::i;:::-;5227:13;;;;;;;:8;:13;;;;;;:84;;;;;;;;;;;;;;;;5326:33;;5227:13;;;5326:33;;;;5352:6;;5326:33;;;;;;;;;;5423:14;;;;5419:1;5423:14;;;:9;:14;;;;;;5396:50;;5423:14;5439:6;5396:14;:50::i;:::-;4414:1039;;;:::o;1221:45::-;;;;;;;;;;;;;;;:::o;729:61::-;778:12;729:61;:::o;10156:100::-;10217:32;10227:10;10239:9;10217;:32::i;:::-;10156:100;:::o;1637:49::-;;;;;;;;;;;;;;;:::o;8462:106::-;8544:17;;8521:4;8544:17;;;:8;:17;;;;;;;;;8462:106::o;882:33::-;914:1;882:33;:::o;12291:1185::-;12370:6;12410:12;12396:11;:26;12388:77;;;;;;;;;;;;;;12498:23;;;12476:19;12498:23;;;:14;:23;;;;;;;;12535:17;12531:56;;12575:1;12568:8;;;;;12531:56;12644:20;;;;;;;:11;:20;;;;;;;;:38;12665:16;;;12644:38;;;;;;;;;:48;;:63;-1:-1:-1;12640:145:6;;12730:20;;;;;;;:11;:20;;;;;;;;12751:16;;;;;12730:38;;;;;;;;:44;;;;;;;-1:-1:-1;12723:51:6;;12640:145;12843:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;12839:86:6;;;12913:1;12906:8;;;;;12839:86;12935:12;12976:16;;;13002:418;13017:5;13009:13;;:5;:13;;;13002:418;;;13080:1;13063:13;;;13062:19;;;13054:27;;13122:20;;:::i;:::-;-1:-1:-1;13145:20:6;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;13122:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13191:27;;13187:223;;;13245:8;;;;-1:-1:-1;13238:15:6;;-1:-1:-1;;;;13238:15:6;13187:223;13278:12;;:26;;;-1:-1:-1;13274:136:6;;;13332:6;13324:14;;13274:136;;;13394:1;13385:6;:10;13377:18;;13274:136;13002:418;;;;;-1:-1:-1;13436:20:6;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;12291:1185:6;;;;:::o;2388:39::-;;;;;;;;;;;;;:::o;251:37::-;;;;;;;;;;;;;;;;;;;:::o;8824:233::-;8889:4;8905:13;8921:58;8928:9;8921:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;8905:74;;8989:40;9005:10;9017:3;9022:6;8989:15;:40::i;:::-;-1:-1:-1;9046:4:6;;8824:233;-1:-1:-1;;;8824:233:6:o;11650:219::-;11755:23;;;11715:6;11755:23;;;:14;:23;;;;;;;;11795:16;:67;;11861:1;11795:67;;;11814:20;;;;;;;:11;:20;;;;;;;;11835:16;;;11814:38;;;;;;;;;:44;;;;;;11788:74;11650:219;-1:-1:-1;;;11650:219:6:o;10679:777::-;10794:23;1798:80;;;;;;;;;;;;;;;;10874:4;;;;;;;;;;;;;;;;;;10858:22;10882:12;:10;:12::i;:::-;10904:4;10830:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10830:80:6;;;10820:91;;;;;;10794:117;;10921:18;2015:71;;;;;;;;;;;;;;;10952:57;;10984:9;;10995:5;;11002:6;;10952:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10952:57:6;;;10942:68;;;;;;10921:89;;11020:14;11076:15;11093:10;11047:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11047:57:6;;;11037:68;;;;;;11020:85;;11115:17;11135:26;11145:6;11153:1;11156;11159;11135:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11135:26:6;;;;;;-1:-1:-1;;11179:23:6;;;11171:73;;;;;;;;;;;;;;11271:17;;;;;;;:6;:17;;;;;:19;;;;;;;;11262:28;;11254:74;;;;;;;;;;;;;;11353:6;11346:3;:13;;11338:63;;;;;;;;;;;;;;11418:31;11428:9;11439;11418;:31::i;:::-;11411:38;;;;10679:777;;;;;;;:::o;7235:1031::-;7364:13;7409:2;7391:9;:21;7387:167;;;-1:-1:-1;7444:2:6;7387:167;;;7487:56;7494:9;7487:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;7478:65;;7387:167;7564:23;1798:80;;;;;;;;;;;;;;;;7644:4;;;;;;;;;;;;;;;;;;7628:22;7652:12;:10;:12::i;:::-;7674:4;7600:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7600:80:6;;;7590:91;;;;;;7564:117;;7691:18;2215:95;;;;;;;;;;;;;;;;7777:13;;;;;;;:6;:13;;;;;;;:15;;;;;;;;7722:81;;2215:95;;7750:5;;7757:7;;7766:9;;7777:15;;7794:8;;7722:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7722:81:6;;;7712:92;;;;;;7691:113;;7814:14;7870:15;7887:10;7841:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7841:57:6;;;7831:68;;;;;;7814:85;;7909:17;7929:26;7939:6;7947:1;7950;7953;7929:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7929:26:6;;;;;;-1:-1:-1;;7973:23:6;;;7965:66;;;;;;;;;;;;;;8062:5;8049:18;;:9;:18;;;8041:56;;;;;;;;;;;;;;8122:8;8115:3;:15;;8107:58;;;;;;;;;;;;;;8205:6;8176:10;:17;8187:5;8176:17;;;;;;;;;;;;;;;:26;8194:7;8176:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;8243:7;8227:32;;8236:5;8227:32;;;8252:6;8227:32;;;;;;;;;;;;;;;7235:1031;;;;;;;;;;;;:::o;5749:134::-;5848:19;;;;5825:4;5848:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;5749:134::o;1969:117::-;2015:71;;;;;;1501:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4019:227::-;4096:6;;;;4082:10;:20;4074:94;;;;;;;;;;;;;;4197:6;;4183:30;;;;;;4197:6;;;;;4205:7;;4183:30;;;;;;;;;;4223:6;:16;;;;;;;;;;;;;;;4019:227::o;16176:158::-;16251:6;16288:12;16281:5;16277:9;;16269:32;;;;;;;;;;;;;;;-1:-1:-1;16325:1:6;;16176:158;-1:-1:-1;;16176:158:6:o;16530:162::-;16616:6;16647:1;16642:6;;:1;:6;;;;16650:12;16634:29;;;;;;;;;;;;;;;;-1:-1:-1;;;16680:5:6;;;16530:162::o;13855:601::-;13948:17;;;13940:89;;;;;;;;;;;;;;14047:17;;;14039:87;;;;;;;;;;;;;;14159:13;;;;;;;:8;:13;;;;;;;;;;14153:85;;;;;;;;;;;;;;14159:13;;;;;14174:6;;14153:85;;;;;;;:5;:85::i;:::-;14137:13;;;;;;;;:8;:13;;;;;;;;:101;;;;;;;;;;;14270:13;;;;;;;;;;14264:79;;;;;;;;;;;;;;14270:13;;;;;14285:6;;14264:79;;;;;;;;:5;:79::i;:::-;14248:13;;;;;;;;:8;:13;;;;;;;:95;;;;;;;;;;;;;;;;14358:26;;;;;;;;;;14377:6;;14358:26;;;;;;;;;;14410:14;;;;;;;;:9;:14;;;;;;;14426;;;;;;;;14395:54;;14410:14;;;;14426;14442:6;14395:14;:54::i;959:176:3:-;1017:7;1048:5;;;1071:6;;;;1063:46;;;;;;;;;;;;;2656:459;2714:7;2955:6;2951:45;;-1:-1:-1;2984:1:3;2977:8;;2951:45;3018:5;;;3022:1;3018;:5;:1;3041:5;;;;;:10;3033:56;;;;;;;;;;;;;4267:130;4325:7;4351:39;4355:1;4358;4351:39;;;;;;;;;;;;;;;;;:3;:39::i;16340:184:6:-;16426:6;16455:5;;;16486:12;16478:6;;;;;;;;;16470:29;;;;;;;;;;;;;;;-1:-1:-1;16516:1:6;16340:184;-1:-1:-1;;;;16340:184:6:o;14462:921::-;14566:6;14556:16;;:6;:16;;;;:30;;;;;14585:1;14576:6;:10;;;14556:30;14552:825;;;14606:20;;;;14602:376;;14665:22;;;14646:16;14665:22;;;:14;:22;;;;;;;;;14724:13;:60;;14783:1;14724:60;;;14740:19;;;;;;;:11;:19;;;;;;;;14760:13;;;14740:34;;;;;;;;;:40;;;;;;14724:60;14705:79;;14802:16;14821:67;14827:9;14838:6;14821:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14802:86;;14906:57;14923:6;14931:9;14942;14953;14906:16;:57::i;:::-;14602:376;;;;14996:20;;;;14992:375;;15055:22;;;15036:16;15055:22;;;:14;:22;;;;;;;;;15114:13;:60;;15173:1;15114:60;;;15130:19;;;;;;;:11;:19;;;;;;;;15150:13;;;15130:34;;;;;;;;;:40;;;;;;15114:60;15095:79;;15192:16;15211:66;15217:9;15228:6;15211:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;15192:85;;15295:57;15312:6;15320:9;15331;15342;15295:16;:57::i;13482:367::-;13584:20;;;;13558:23;13584:20;;;:9;:20;;;;;;;;;;13640:8;:19;;;;;;13669:20;;;;:32;;;;;;;;;;;13717:54;;13584:20;;;;;13640:19;;;;;13669:32;;13584:20;;;13717:54;;13558:23;13717:54;13782:60;13797:15;13814:9;13825:16;13782:14;:60::i;:::-;13482:367;;;;:::o;16698:149::-;16806:9;16698:149;:::o;4872:338:3:-;4958:7;5058:12;5051:5;5043:28;;;;;;;;;;;;;;;;5081:9;5097:1;5093;:5;;;;;;;4872:338;-1:-1:-1;;;;;4872:338:3:o;15389:617:6:-;15506:18;15527:75;15534:12;15527:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;15506:96;;15630:1;15615:12;:16;;;:85;;;;-1:-1:-1;15635:22:6;;;;;;;:11;:22;;;;;;;;:65;15658:16;;;15635:40;;;;;;;;;:50;:65;;;:50;;:65;15615:85;15611:324;;;15714:22;;;;;;;:11;:22;;;;;;;;15737:16;;;15714:40;;;;;;;;;:57;;;;;;;;;;;;15611:324;;;15837:33;;;;;;;;;;;;;;;;;;;;;;;;;15798:22;;;-1:-1:-1;15798:22:6;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15882:25;;;:14;:25;;;;;;;:44;;15798:72;15910:16;;15882:44;;;;;;;;;;;;;15611:324;15969:9;15948:51;;;15980:8;15990;15948:51;;;;;;;;;;;;;;;;15389:617;;;;;:::o;16012:158::-;16087:6;16124:12;16117:5;16113:9;;16105:32;;;;;;;;;;;;;;86:16763;;;;;;;;;;-1:-1:-1;86:16763:6;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;4648:113;4731:24;4749:5;4731:24;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5230:39;;;;5019:255;-1:-1;;;5019:255;5628:374;;5788:67;5852:2;5847:3;5788:67;;;5888:34;5868:55;;5957:7;5952:2;5943:12;;5936:29;5993:2;5984:12;;5774:228;-1:-1;;5774:228;6011:398;;6189:84;6271:1;6266:3;6189:84;;;6306:66;6286:87;;6401:1;6392:11;;6175:234;-1:-1;;6175:234;6418:327;;6578:67;6642:2;6637:3;6578:67;;;6678:29;6658:50;;6736:2;6727:12;;6564:181;-1:-1;;6564:181;6754:374;;6914:67;6978:2;6973:3;6914:67;;;7014:34;6994:55;;7083:7;7078:2;7069:12;;7062:29;7119:2;7110:12;;6900:228;-1:-1;;6900:228;7137:375;;7297:67;7361:2;7356:3;7297:67;;;7397:34;7377:55;;7466:8;7461:2;7452:12;;7445:30;7503:2;7494:12;;7283:229;-1:-1;;7283:229;7521:383;;7681:67;7745:2;7740:3;7681:67;;;7781:34;7761:55;;7850:16;7845:2;7836:12;;7829:38;7895:2;7886:12;;7667:237;-1:-1;;7667:237;7913:492;;8091:85;8173:2;8168:3;8091:85;;;8209:34;8189:55;;8278:34;8273:2;8264:12;;8257:56;8347:20;8342:2;8333:12;;8326:42;8396:2;8387:12;;8077:328;-1:-1;;8077:328;8414:371;;8574:67;8638:2;8633:3;8574:67;;;8674:34;8654:55;;8743:4;8738:2;8729:12;;8722:26;8776:2;8767:12;;8560:225;-1:-1;;8560:225;8794:477;;8972:85;9054:2;9049:3;8972:85;;;9090:34;9070:55;;9159:34;9154:2;9145:12;;9138:56;9228:5;9223:2;9214:12;;9207:27;9262:2;9253:12;;8958:313;-1:-1;;8958:313;9280:394;;9440:67;9504:2;9499:3;9440:67;;;9540:34;9520:55;;9609:27;9604:2;9595:12;;9588:49;9665:2;9656:12;;9426:248;-1:-1;;9426:248;9683:370;;9843:67;9907:2;9902:3;9843:67;;;9943:34;9923:55;;10012:3;10007:2;9998:12;;9991:25;10044:2;10035:12;;9829:224;-1:-1;;9829:224;10062:328;;10222:67;10286:2;10281:3;10222:67;;;10322:30;10302:51;;10381:2;10372:12;;10208:182;-1:-1;;10208:182;10399:372;;10559:67;10623:2;10618:3;10559:67;;;10659:34;10639:55;;10728:5;10723:2;10714:12;;10707:27;10762:2;10753:12;;10545:226;-1:-1;;10545:226;10780:398;;10940:67;11004:2;10999:3;10940:67;;;11040:34;11020:55;;11109:31;11104:2;11095:12;;11088:53;11169:2;11160:12;;10926:252;-1:-1;;10926:252;11187:370;;11347:67;11411:2;11406:3;11347:67;;;11447:34;11427:55;;11516:3;11511:2;11502:12;;11495:25;11548:2;11539:12;;11333:224;-1:-1;;11333:224;11566:396;;11726:67;11790:2;11785:3;11726:67;;;11826:34;11806:55;;11895:29;11890:2;11881:12;;11874:51;11953:2;11944:12;;11712:250;-1:-1;;11712:250;11971:330;;12131:67;12195:2;12190:3;12131:67;;;12231:32;12211:53;;12292:2;12283:12;;12117:184;-1:-1;;12117:184;12310:431;;12488:85;12570:2;12565:3;12488:85;;;12606:34;12586:55;;12675:28;12670:2;12661:12;;12654:50;12732:2;12723:12;;12474:267;-1:-1;;12474:267;12750:330;;12910:67;12974:2;12969:3;12910:67;;;13010:32;12990:53;;13071:2;13062:12;;12896:184;-1:-1;;12896:184;13089:325;;13249:67;13313:2;13308:3;13249:67;;;13349:27;13329:48;;13405:2;13396:12;;13235:179;-1:-1;;13235:179;13542:110;13623:23;13640:5;13623:23;;13659:107;13738:22;13754:5;13738:22;;13773:124;13855:36;13885:5;13855:36;;13904:110;13985:23;14002:5;13985:23;;14021:650;;14276:148;14420:3;14276:148;;;14269:155;;14435:75;14506:3;14497:6;14435:75;;;14532:2;14527:3;14523:12;14516:19;;14546:75;14617:3;14608:6;14546:75;;;-1:-1;14643:2;14634:12;;14257:414;-1:-1;;14257:414;14678:372;;14877:148;15021:3;14877:148;;15057:372;;15256:148;15400:3;15256:148;;15436:372;;15635:148;15779:3;15635:148;;15815:213;15933:2;15918:18;;15947:71;15922:9;15991:6;15947:71;;16035:324;16181:2;16166:18;;16195:71;16170:9;16239:6;16195:71;;;16277:72;16345:2;16334:9;16330:18;16321:6;16277:72;;16366:201;16478:2;16463:18;;16492:65;16467:9;16530:6;16492:65;;16574:213;16692:2;16677:18;;16706:71;16681:9;16750:6;16706:71;;16794:771;17052:3;17037:19;;17067:71;17041:9;17111:6;17067:71;;;17149:72;17217:2;17206:9;17202:18;17193:6;17149:72;;;17232;17300:2;17289:9;17285:18;17276:6;17232:72;;;17315;17383:2;17372:9;17368:18;17359:6;17315:72;;;17398:73;17466:3;17455:9;17451:19;17442:6;17398:73;;;17482;17550:3;17539:9;17535:19;17526:6;17482:73;;;17023:542;;;;;;;;;;17572:547;17774:3;17759:19;;17789:71;17763:9;17833:6;17789:71;;;17871:72;17939:2;17928:9;17924:18;17915:6;17871:72;;;17954;18022:2;18011:9;18007:18;17998:6;17954:72;;;18037;18105:2;18094:9;18090:18;18081:6;18037:72;;;17745:374;;;;;;;;18126:547;18328:3;18313:19;;18343:71;18317:9;18387:6;18343:71;;;18425:72;18493:2;18482:9;18478:18;18469:6;18425:72;;;18508;18576:2;18565:9;18561:18;18552:6;18508:72;;;18591;18659:2;18648:9;18644:18;18635:6;18591:72;;18680:539;18878:3;18863:19;;18893:71;18867:9;18937:6;18893:71;;;18975:68;19039:2;19028:9;19024:18;19015:6;18975:68;;19226:293;19360:2;19374:47;;;19345:18;;19435:74;19345:18;19495:6;19435:74;;19834:407;20025:2;20039:47;;;20010:18;;20100:131;20010:18;20100:131;;20248:407;20439:2;20453:47;;;20424:18;;20514:131;20424:18;20514:131;;20662:407;20853:2;20867:47;;;20838:18;;20928:131;20838:18;20928:131;;21076:407;21267:2;21281:47;;;21252:18;;21342:131;21252:18;21342:131;;21490:407;21681:2;21695:47;;;21666:18;;21756:131;21666:18;21756:131;;21904:407;22095:2;22109:47;;;22080:18;;22170:131;22080:18;22170:131;;22318:407;22509:2;22523:47;;;22494:18;;22584:131;22494:18;22584:131;;22732:407;22923:2;22937:47;;;22908:18;;22998:131;22908:18;22998:131;;23146:407;23337:2;23351:47;;;23322:18;;23412:131;23322:18;23412:131;;23560:407;23751:2;23765:47;;;23736:18;;23826:131;23736:18;23826:131;;23974:407;24165:2;24179:47;;;24150:18;;24240:131;24150:18;24240:131;;24388:407;24579:2;24593:47;;;24564:18;;24654:131;24564:18;24654:131;;24802:407;24993:2;25007:47;;;24978:18;;25068:131;24978:18;25068:131;;25216:407;25407:2;25421:47;;;25392:18;;25482:131;25392:18;25482:131;;25630:407;25821:2;25835:47;;;25806:18;;25896:131;25806:18;25896:131;;26044:407;26235:2;26249:47;;;26220:18;;26310:131;26220:18;26310:131;;26678:209;26794:2;26779:18;;26808:69;26783:9;26850:6;26808:69;;26894:316;27036:2;27021:18;;27050:69;27025:9;27092:6;27050:69;;;27130:70;27196:2;27185:9;27181:18;27172:6;27130:70;;27217:205;27331:2;27316:18;;27345:67;27320:9;27385:6;27345:67;;27429:211;27546:2;27531:18;;27560:70;27535:9;27603:6;27560:70;;27647:209;27763:2;27748:18;;27777:69;27752:9;27819:6;27777:69;;27863:320;28007:2;27992:18;;28021:70;27996:9;28064:6;28021:70;;;28102:71;28169:2;28158:9;28154:18;28145:6;28102:71;;28190:118;28274:12;;28245:63;28445:163;28548:19;;;28597:4;28588:14;;28541:67;28617:145;28753:3;28731:31;-1:-1;28731:31;28770:91;;28832:24;28850:5;28832:24;;28868:85;28934:13;28927:21;;28910:43;28960:72;29022:5;29005:27;29039:121;29112:42;29101:54;;29084:76;29246:88;29318:10;29307:22;;29290:44;29341:81;29412:4;29401:16;;29384:38;29429:104;29501:26;29490:38;;29473:60;29540:106;;29618:23;29635:5;29618:23;;29654:268;29719:1;29726:101;29740:6;29737:1;29734:13;29726:101;;;29807:11;;;29801:18;29788:11;;;29781:39;29762:2;29755:10;29726:101;;;29842:6;29839:1;29836:13;29833:2;;;-1:-1;;29907:1;29889:16;;29882:27;29703:219;30011:97;30099:2;30079:14;30095:7;30075:28;;30059:49;30116:117;30185:24;30203:5;30185:24;;;30178:5;30175:35;30165:2;;30224:1;30221;30214:12;30240:117;30309:24;30327:5;30309:24;;30488:115;30556:23;30573:5;30556:23;;30610:113;30677:22;30693:5;30677:22;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintingAllowedAfter_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newMinter\",\"type\":\"address\"}],\"name\":\"MinterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"fromBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"votes\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCurrentVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPriorVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minimumTimeBetweenMints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mintCap\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mintingAllowedAfter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter_\",\"type\":\"address\"}],\"name\":\"setMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"params\":{\"account\":\"The address of the account holding the funds\",\"spender\":\"The address of the account spending the funds\"},\"return\":\"The number of tokens approved\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender` and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\",\"params\":{\"rawAmount\":\"The number of tokens that are approved (2^256-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"account\":\"The address of the account to get the balance of\"},\"return\":\"The number of tokens held\"},\"constructor\":{\"params\":{\"account\":\"The initial account to grant all the tokens\",\"minter_\":\"The account with minting ability\",\"mintingAllowedAfter_\":\"The timestamp after which minting may occur\"}},\"delegate(address)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\"}},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\",\"expiry\":\"The time at which to expire the signature\",\"nonce\":\"The contract state required to match the signature\",\"r\":\"Half of the ECDSA signature pair\",\"s\":\"Half of the ECDSA signature pair\",\"v\":\"The recovery byte of the signature\"}},\"getCurrentVotes(address)\":{\"params\":{\"account\":\"The address to get votes balance\"},\"return\":\"The number of current votes for `account`\"},\"getPriorVotes(address,uint256)\":{\"details\":\"Block number must be a finalized block or else this function will revert to prevent misinformation.\",\"params\":{\"account\":\"The address of the account to check\",\"blockNumber\":\"The block number to get the vote balance at\"},\"return\":\"The number of votes the account had as of the given block\"},\"mint(address,uint256)\":{\"params\":{\"dst\":\"The address of the destination account\",\"rawAmount\":\"The number of tokens to be minted\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The time at which to expire the signature\",\"owner\":\"The address to approve from\",\"r\":\"Half of the ECDSA signature pair\",\"rawAmount\":\"The number of tokens that are approved (2^256-1 means infinite)\",\"s\":\"Half of the ECDSA signature pair\",\"spender\":\"The address to be approved\",\"v\":\"The recovery byte of the signature\"}},\"setMinter(address)\":{\"params\":{\"minter_\":\"The address of the new minter\"}},\"transfer(address,uint256)\":{\"params\":{\"dst\":\"The address of the destination account\",\"rawAmount\":\"The number of tokens to transfer\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"dst\":\"The address of the destination account\",\"rawAmount\":\"The number of tokens to transfer\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}}},\"userdoc\":{\"methods\":{\"allowance(address,address)\":{\"notice\":\"Get the number of tokens `spender` is approved to spend on behalf of `account`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the number of tokens held by the `account`\"},\"constructor\":\"Construct a new Uni token\",\"delegate(address)\":{\"notice\":\"Delegate votes from `msg.sender` to `delegatee`\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Delegates votes from signatory to `delegatee`\"},\"getCurrentVotes(address)\":{\"notice\":\"Gets the current votes balance for `account`\"},\"getPriorVotes(address,uint256)\":{\"notice\":\"Determine the prior number of votes for an account as of a block number\"},\"mint(address,uint256)\":{\"notice\":\"Mint new tokens\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from owner to spends\"},\"setMinter(address)\":{\"notice\":\"Change the minter address\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}}}},\"settings\":{\"compilationTarget\":{\"contracts/Uni.sol\":\"Uni\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/SafeMath.sol\":{\"keccak256\":\"0x5082b717b4b08c7c2068666edce6f70363eeacee07777086ed8eef9353c39e2c\",\"urls\":[\"bzz-raw://02764f2c13cd5c53dd839d7554cfd6a668e45aff19e708b496896f181380cd7c\",\"dweb:/ipfs/QmcaGAZi7dQpCvmzKwzybQBYfyvFGdqHhXXXbJncTMewG7\"]},\"contracts/Uni.sol\":{\"keccak256\":\"0x4b15650208a158f5d7bc5821cedeb6535a8550fda2adbf8af77b3b30c68919b5\",\"urls\":[\"bzz-raw://aea469c3f98697b4cbaf4c1b1122f5fa028d457596e2b4c5e5d928ec881fd435\",\"dweb:/ipfs/QmPwM8F2CFLQNvSujfA3BCtRyD9Ze7HhWEFi7cY1fofz6q\"]}},\"version\":1}",
      "bytecode": "60806040526b033b2e3c9fd0803ce80000006000553480156200002157600080fd5b506040516200341338038062003413833981016040819052620000449162000171565b42811015620000705760405162461bcd60e51b8152600401620000679062000273565b60405180910390fd5b600080546001600160a01b0385168083526004602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000de919062000285565b60405180910390a3600180546001600160a01b0319166001600160a01b0384811691909117918290556040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6926200013d926000929116906200024d565b60405180910390a160025550620002ec9050565b80516200015e81620002c7565b92915050565b80516200015e81620002e1565b6000806000606084860312156200018757600080fd5b600062000195868662000151565b9350506020620001a88682870162000151565b9250506040620001bb8682870162000164565b9150509250925092565b620001d081620002b3565b82525050565b620001d0816200029e565b6000620001f060398362000295565b7f556e693a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e81527f6c7920626567696e206166746572206465706c6f796d656e7400000000000000602082015260400192915050565b620001d081620002b0565b604081016200025d8285620001c5565b6200026c6020830184620001d6565b9392505050565b602080825281016200015e81620001e1565b602081016200015e828462000242565b90815260200190565b60006001600160a01b0382166200015e565b90565b60006200015e8260006200015e826200029e565b620002d2816200029e565b8114620002de57600080fd5b50565b620002d281620002b0565b61311780620002fc6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461036b578063e7a324dc1461037e578063f1127ed814610386578063fca3b5aa146103a7576101b9565b8063b4b5ea5714610332578063c3cda52014610345578063d505accf14610358576101b9565b8063782d6fe1116100d3578063782d6fe1146102e45780637ecebe001461030457806395d89b4114610317578063a9059cbb1461031f576101b9565b80636fcfff45146102b657806370a08231146102c957806376c71ca1146102dc576101b9565b806330adf81f1161016657806340c10f191161014057806340c10f1914610266578063587cde1e1461027b5780635c11d62f1461028e5780635c19a95c146102a3576101b9565b806330adf81f1461024157806330b36cef14610249578063313ce56714610251576101b9565b806318160ddd1161019757806318160ddd1461021157806320606b701461022657806323b872dd1461022e576101b9565b806306fdde03146101be57806307546172146101dc578063095ea7b3146101f1575b600080fd5b6101c66103ba565b6040516101d39190612c72565b60405180910390f35b6101e46103f3565b6040516101d39190612b45565b6102046101ff3660046122aa565b61040f565b6040516101d39190612b6e565b610219610534565b6040516101d39190612b7c565b61021961053a565b61020461023c3660046121c1565b610551565b6102196106f5565b610219610701565b610259610707565b6040516101d39190612dac565b6102796102743660046122aa565b61070c565b005b6101e4610289366004612161565b6109fc565b610296610a24565b6040516101d39190612d83565b6102796102b1366004612161565b610a2c565b6102966102c4366004612161565b610a39565b6102196102d7366004612161565b610a51565b610259610a87565b6102f76102f23660046122aa565b610a8c565b6040516101d39190612dc8565b610219610312366004612161565b610d6e565b6101c6610d80565b61020461032d3660046122aa565b610db9565b6102f7610340366004612161565b610df5565b6102796103533660046122da565b610ea3565b61027961036636600461220e565b611128565b610219610379366004612187565b61155d565b6102196115a3565b610399610394366004612361565b6115af565b6040516101d3929190612d91565b6102796103b5366004612161565b6115ea565b6040518060400160405280600781526020017f556e69737761700000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561046157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610486565b61048383604051806060016040528060248152602001613082602491396116d6565b90505b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610520908590612dba565b60405180910390a360019150505b92915050565b60005481565b60405161054690612b2f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926105bb9288929190613082908301396116d6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060757506bffffffffffffffffffffffff82811614155b156106db57600061063183836040518060600160405280603c8152602001612f02603c9139611728565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600360209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d1908590612dba565b60405180910390a3505b6106e687878361178b565b600193505050505b9392505050565b60405161054690612b24565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d13565b60405180910390fd5b6002544210156107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cd3565b73ffffffffffffffffffffffffffffffffffffffff82166107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cc3565b6107fd426301e133806119f2565b600281905550600061082782604051806060016040528060218152602001613061602191396116d6565b905061084361083c600054600260ff16611a31565b6064611a85565b816bffffffffffffffffffffffff16111561088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d03565b6108c56108a7600054836bffffffffffffffffffffffff166119f2565b604051806060016040528060268152602001612f3e602691396116d6565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260248084526109299491909116928592909190612ede90830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff841660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109bd908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408120546109f7921683611b22565b505050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610a363382611d69565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b600281565b6000438210610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cb3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff1680610b0257600091505061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610bda5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015610c2257600091505061052e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610d1657600282820363ffffffff16048103610c7261211e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610cf15760200151945061052e9350505050565b805163ffffffff16871115610d0857819350610d0f565b6001820392505b5050610c48565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60086020526000908152604090205481565b6040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525081565b600080610dde8360405180606001604052806025815260200161303c602591396116d6565b9050610deb33858361178b565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff1680610e2d5760006106ee565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610eb190612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985610f18611e1d565b30604051602001610f2c9493929190612c22565b6040516020818303038152906040528051906020012090506000604051610f5290612b3a565b604051908190038120610f6d918a908a908a90602001612be4565b60405160208183030381529060405280519060200120905060008282604051602001610f9a929190612af3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610fd79493929190612c57565b6020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ca3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915589146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d33565b87421115611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c83565b61111b818b611d69565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561117957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61119e565b61119b86604051806060016040528060238152602001612f99602391396116d6565b90505b60006040516111ac90612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985611213611e1d565b306040516020016112279493929190612c22565b604051602081830303815290604052805190602001209050600060405161124d90612b24565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602090815292902080546001810190915561129c9391928e928e928e9290918e9101612b8a565b604051602081830303815290604052805190602001209050600082826040516020016112c9929190612af3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113069493929190612c57565b6020604051602081039080840390855afa158015611328573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d63565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d73565b8842111561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d53565b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516115479190612dba565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161054690612b3a565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff16331461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d23565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916116879173ffffffffffffffffffffffffffffffffffffffff909116908490612b53565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff83166117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d43565b73ffffffffffffffffffffffffffffffffffffffff8216611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ce3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526035808452611882936bffffffffffffffffffffffff9092169285929190612f6490830139611728565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f80845261191494919091169285929091906130a690830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ab908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546109f792918216911683611b22565b6000828201838110156106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c93565b600082611a405750600061052e565b82820282848281611a4d57fe5b04146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cf3565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e21565b6000838301826bffffffffffffffffffffffff8087169083161015611b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57506000816bffffffffffffffffffffffff16115b156109f75773ffffffffffffffffffffffffffffffffffffffff831615611c6f5773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081611bc6576000611c36565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c5d828560405180606001604052806027815260200161301560279139611728565b9050611c6b86848484611e72565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156109f75773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081611cc4576000611d34565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d5b8285604051806060016040528060268152602001612fbc60269139611ac7565b905061112085848484611e72565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611e17828483611b22565b50505050565b4690565b60008183611e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b506000838581611e6857fe5b0495945050505050565b6000611e9643604051806060016040528060338152602001612fe2603391396120dc565b905060008463ffffffff16118015611f0a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611fa95773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612085565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516120cd929190612dd6565b60405180910390a25050505050565b6000816401000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b604080518082019091526000808252602082015290565b803561052e81612eae565b803561052e81612ec2565b803561052e81612ecb565b803561052e81612ed4565b60006020828403121561217357600080fd5b600061217f8484612135565b949350505050565b6000806040838503121561219a57600080fd5b60006121a68585612135565b92505060206121b785828601612135565b9150509250929050565b6000806000606084860312156121d657600080fd5b60006121e28686612135565b93505060206121f386828701612135565b925050604061220486828701612140565b9150509250925092565b600080600080600080600060e0888a03121561222957600080fd5b60006122358a8a612135565b97505060206122468a828b01612135565b96505060406122578a828b01612140565b95505060606122688a828b01612140565b94505060806122798a828b01612156565b93505060a061228a8a828b01612140565b92505060c061229b8a828b01612140565b91505092959891949750929550565b600080604083850312156122bd57600080fd5b60006122c98585612135565b92505060206121b785828601612140565b60008060008060008060c087890312156122f357600080fd5b60006122ff8989612135565b965050602061231089828a01612140565b955050604061232189828a01612140565b945050606061233289828a01612156565b935050608061234389828a01612140565b92505060a061235489828a01612140565b9150509295509295509295565b6000806040838503121561237457600080fd5b60006123808585612135565b92505060206121b78582860161214b565b61239a81612e03565b82525050565b61239a81612e0e565b61239a81612e13565b61239a6123be82612e13565b612e13565b60006123ce82612df1565b6123d88185612df5565b93506123e8818560208601612e5a565b6123f181612e86565b9093019392505050565b6000612408602583612df5565b7f556e693a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612467600283612dfe565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124a0601b83612df5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124d9602583612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612538602683612df5565b7f556e693a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612597602e83612df5565b7f556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b60006125f6605283612dfe565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061267b602283612df5565b7f556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126da604383612dfe565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061275f603983612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006127be602183612df5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061281d601c83612df5565b7f556e693a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612856602383612df5565b7f556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006128b5603d83612df5565b7f556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612914602183612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612973603b83612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006129d2601e83612df5565b7f556e693a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612a0b603a83612dfe565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612a6a601e83612df5565b7f556e693a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000612aa3601983612df5565b7f556e693a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b61239a81612e2f565b61239a81612e38565b61239a81612e4f565b61239a81612e3e565b6000612afe8261245a565b9150612b0a82856123b2565b602082019150612b1a82846123b2565b5060200192915050565b600061052e826125e9565b600061052e826126cd565b600061052e826129fe565b6020810161052e8284612391565b60408101612b618285612391565b6106ee6020830184612391565b6020810161052e82846123a0565b6020810161052e82846123a9565b60c08101612b9882896123a9565b612ba56020830188612391565b612bb26040830187612391565b612bbf60608301866123a9565b612bcc60808301856123a9565b612bd960a08301846123a9565b979650505050505050565b60808101612bf282876123a9565b612bff6020830186612391565b612c0c60408301856123a9565b612c1960608301846123a9565b95945050505050565b60808101612c3082876123a9565b612c3d60208301866123a9565b612c4a60408301856123a9565b612c196060830184612391565b60808101612c6582876123a9565b612bff6020830186612ad8565b602080825281016106ee81846123c3565b6020808252810161052e816123fb565b6020808252810161052e81612493565b6020808252810161052e816124cc565b6020808252810161052e8161252b565b6020808252810161052e8161258a565b6020808252810161052e8161266e565b6020808252810161052e81612752565b6020808252810161052e816127b1565b6020808252810161052e81612810565b6020808252810161052e81612849565b6020808252810161052e816128a8565b6020808252810161052e81612907565b6020808252810161052e81612966565b6020808252810161052e816129c5565b6020808252810161052e81612a5d565b6020808252810161052e81612a96565b6020810161052e8284612acf565b60408101612d9f8285612acf565b6106ee6020830184612aea565b6020810161052e8284612ad8565b6020810161052e8284612ae1565b6020810161052e8284612aea565b60408101612de48285612ae1565b6106ee6020830184612ae1565b5190565b90815260200190565b919050565b600061052e82612e16565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061052e82612e3e565b60005b83811015612e75578181015183820152602001612e5d565b83811115611e175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612eb781612e03565b8114610a3657600080fd5b612eb781612e13565b612eb781612e2f565b612eb781612e3856fe556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a7231582068d42e51eae03f461fed8d2db904ba521e900521e0a2199b4a57d733502ad3da6c6578706572696d656e74616cf564736f6c63430005100040",
      "bin": "60806040526b033b2e3c9fd0803ce80000006000553480156200002157600080fd5b506040516200341338038062003413833981016040819052620000449162000171565b42811015620000705760405162461bcd60e51b8152600401620000679062000273565b60405180910390fd5b600080546001600160a01b0385168083526004602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000de919062000285565b60405180910390a3600180546001600160a01b0319166001600160a01b0384811691909117918290556040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6926200013d926000929116906200024d565b60405180910390a160025550620002ec9050565b80516200015e81620002c7565b92915050565b80516200015e81620002e1565b6000806000606084860312156200018757600080fd5b600062000195868662000151565b9350506020620001a88682870162000151565b9250506040620001bb8682870162000164565b9150509250925092565b620001d081620002b3565b82525050565b620001d0816200029e565b6000620001f060398362000295565b7f556e693a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e81527f6c7920626567696e206166746572206465706c6f796d656e7400000000000000602082015260400192915050565b620001d081620002b0565b604081016200025d8285620001c5565b6200026c6020830184620001d6565b9392505050565b602080825281016200015e81620001e1565b602081016200015e828462000242565b90815260200190565b60006001600160a01b0382166200015e565b90565b60006200015e8260006200015e826200029e565b620002d2816200029e565b8114620002de57600080fd5b50565b620002d281620002b0565b61311780620002fc6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461036b578063e7a324dc1461037e578063f1127ed814610386578063fca3b5aa146103a7576101b9565b8063b4b5ea5714610332578063c3cda52014610345578063d505accf14610358576101b9565b8063782d6fe1116100d3578063782d6fe1146102e45780637ecebe001461030457806395d89b4114610317578063a9059cbb1461031f576101b9565b80636fcfff45146102b657806370a08231146102c957806376c71ca1146102dc576101b9565b806330adf81f1161016657806340c10f191161014057806340c10f1914610266578063587cde1e1461027b5780635c11d62f1461028e5780635c19a95c146102a3576101b9565b806330adf81f1461024157806330b36cef14610249578063313ce56714610251576101b9565b806318160ddd1161019757806318160ddd1461021157806320606b701461022657806323b872dd1461022e576101b9565b806306fdde03146101be57806307546172146101dc578063095ea7b3146101f1575b600080fd5b6101c66103ba565b6040516101d39190612c72565b60405180910390f35b6101e46103f3565b6040516101d39190612b45565b6102046101ff3660046122aa565b61040f565b6040516101d39190612b6e565b610219610534565b6040516101d39190612b7c565b61021961053a565b61020461023c3660046121c1565b610551565b6102196106f5565b610219610701565b610259610707565b6040516101d39190612dac565b6102796102743660046122aa565b61070c565b005b6101e4610289366004612161565b6109fc565b610296610a24565b6040516101d39190612d83565b6102796102b1366004612161565b610a2c565b6102966102c4366004612161565b610a39565b6102196102d7366004612161565b610a51565b610259610a87565b6102f76102f23660046122aa565b610a8c565b6040516101d39190612dc8565b610219610312366004612161565b610d6e565b6101c6610d80565b61020461032d3660046122aa565b610db9565b6102f7610340366004612161565b610df5565b6102796103533660046122da565b610ea3565b61027961036636600461220e565b611128565b610219610379366004612187565b61155d565b6102196115a3565b610399610394366004612361565b6115af565b6040516101d3929190612d91565b6102796103b5366004612161565b6115ea565b6040518060400160405280600781526020017f556e69737761700000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561046157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610486565b61048383604051806060016040528060248152602001613082602491396116d6565b90505b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610520908590612dba565b60405180910390a360019150505b92915050565b60005481565b60405161054690612b2f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926105bb9288929190613082908301396116d6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060757506bffffffffffffffffffffffff82811614155b156106db57600061063183836040518060600160405280603c8152602001612f02603c9139611728565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600360209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d1908590612dba565b60405180910390a3505b6106e687878361178b565b600193505050505b9392505050565b60405161054690612b24565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d13565b60405180910390fd5b6002544210156107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cd3565b73ffffffffffffffffffffffffffffffffffffffff82166107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cc3565b6107fd426301e133806119f2565b600281905550600061082782604051806060016040528060218152602001613061602191396116d6565b905061084361083c600054600260ff16611a31565b6064611a85565b816bffffffffffffffffffffffff16111561088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d03565b6108c56108a7600054836bffffffffffffffffffffffff166119f2565b604051806060016040528060268152602001612f3e602691396116d6565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260248084526109299491909116928592909190612ede90830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff841660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109bd908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408120546109f7921683611b22565b505050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610a363382611d69565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b600281565b6000438210610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cb3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff1680610b0257600091505061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610bda5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015610c2257600091505061052e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610d1657600282820363ffffffff16048103610c7261211e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610cf15760200151945061052e9350505050565b805163ffffffff16871115610d0857819350610d0f565b6001820392505b5050610c48565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60086020526000908152604090205481565b6040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525081565b600080610dde8360405180606001604052806025815260200161303c602591396116d6565b9050610deb33858361178b565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff1680610e2d5760006106ee565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610eb190612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985610f18611e1d565b30604051602001610f2c9493929190612c22565b6040516020818303038152906040528051906020012090506000604051610f5290612b3a565b604051908190038120610f6d918a908a908a90602001612be4565b60405160208183030381529060405280519060200120905060008282604051602001610f9a929190612af3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610fd79493929190612c57565b6020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ca3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915589146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d33565b87421115611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c83565b61111b818b611d69565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561117957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61119e565b61119b86604051806060016040528060238152602001612f99602391396116d6565b90505b60006040516111ac90612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985611213611e1d565b306040516020016112279493929190612c22565b604051602081830303815290604052805190602001209050600060405161124d90612b24565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602090815292902080546001810190915561129c9391928e928e928e9290918e9101612b8a565b604051602081830303815290604052805190602001209050600082826040516020016112c9929190612af3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113069493929190612c57565b6020604051602081039080840390855afa158015611328573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d63565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d73565b8842111561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d53565b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516115479190612dba565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161054690612b3a565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff16331461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d23565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916116879173ffffffffffffffffffffffffffffffffffffffff909116908490612b53565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff83166117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d43565b73ffffffffffffffffffffffffffffffffffffffff8216611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ce3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526035808452611882936bffffffffffffffffffffffff9092169285929190612f6490830139611728565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f80845261191494919091169285929091906130a690830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ab908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546109f792918216911683611b22565b6000828201838110156106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c93565b600082611a405750600061052e565b82820282848281611a4d57fe5b04146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cf3565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e21565b6000838301826bffffffffffffffffffffffff8087169083161015611b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57506000816bffffffffffffffffffffffff16115b156109f75773ffffffffffffffffffffffffffffffffffffffff831615611c6f5773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081611bc6576000611c36565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c5d828560405180606001604052806027815260200161301560279139611728565b9050611c6b86848484611e72565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156109f75773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081611cc4576000611d34565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d5b8285604051806060016040528060268152602001612fbc60269139611ac7565b905061112085848484611e72565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611e17828483611b22565b50505050565b4690565b60008183611e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b506000838581611e6857fe5b0495945050505050565b6000611e9643604051806060016040528060338152602001612fe2603391396120dc565b905060008463ffffffff16118015611f0a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611fa95773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612085565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516120cd929190612dd6565b60405180910390a25050505050565b6000816401000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b604080518082019091526000808252602082015290565b803561052e81612eae565b803561052e81612ec2565b803561052e81612ecb565b803561052e81612ed4565b60006020828403121561217357600080fd5b600061217f8484612135565b949350505050565b6000806040838503121561219a57600080fd5b60006121a68585612135565b92505060206121b785828601612135565b9150509250929050565b6000806000606084860312156121d657600080fd5b60006121e28686612135565b93505060206121f386828701612135565b925050604061220486828701612140565b9150509250925092565b600080600080600080600060e0888a03121561222957600080fd5b60006122358a8a612135565b97505060206122468a828b01612135565b96505060406122578a828b01612140565b95505060606122688a828b01612140565b94505060806122798a828b01612156565b93505060a061228a8a828b01612140565b92505060c061229b8a828b01612140565b91505092959891949750929550565b600080604083850312156122bd57600080fd5b60006122c98585612135565b92505060206121b785828601612140565b60008060008060008060c087890312156122f357600080fd5b60006122ff8989612135565b965050602061231089828a01612140565b955050604061232189828a01612140565b945050606061233289828a01612156565b935050608061234389828a01612140565b92505060a061235489828a01612140565b9150509295509295509295565b6000806040838503121561237457600080fd5b60006123808585612135565b92505060206121b78582860161214b565b61239a81612e03565b82525050565b61239a81612e0e565b61239a81612e13565b61239a6123be82612e13565b612e13565b60006123ce82612df1565b6123d88185612df5565b93506123e8818560208601612e5a565b6123f181612e86565b9093019392505050565b6000612408602583612df5565b7f556e693a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612467600283612dfe565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124a0601b83612df5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124d9602583612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612538602683612df5565b7f556e693a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612597602e83612df5565b7f556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b60006125f6605283612dfe565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061267b602283612df5565b7f556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126da604383612dfe565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061275f603983612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006127be602183612df5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061281d601c83612df5565b7f556e693a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612856602383612df5565b7f556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006128b5603d83612df5565b7f556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612914602183612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612973603b83612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006129d2601e83612df5565b7f556e693a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612a0b603a83612dfe565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612a6a601e83612df5565b7f556e693a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000612aa3601983612df5565b7f556e693a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b61239a81612e2f565b61239a81612e38565b61239a81612e4f565b61239a81612e3e565b6000612afe8261245a565b9150612b0a82856123b2565b602082019150612b1a82846123b2565b5060200192915050565b600061052e826125e9565b600061052e826126cd565b600061052e826129fe565b6020810161052e8284612391565b60408101612b618285612391565b6106ee6020830184612391565b6020810161052e82846123a0565b6020810161052e82846123a9565b60c08101612b9882896123a9565b612ba56020830188612391565b612bb26040830187612391565b612bbf60608301866123a9565b612bcc60808301856123a9565b612bd960a08301846123a9565b979650505050505050565b60808101612bf282876123a9565b612bff6020830186612391565b612c0c60408301856123a9565b612c1960608301846123a9565b95945050505050565b60808101612c3082876123a9565b612c3d60208301866123a9565b612c4a60408301856123a9565b612c196060830184612391565b60808101612c6582876123a9565b612bff6020830186612ad8565b602080825281016106ee81846123c3565b6020808252810161052e816123fb565b6020808252810161052e81612493565b6020808252810161052e816124cc565b6020808252810161052e8161252b565b6020808252810161052e8161258a565b6020808252810161052e8161266e565b6020808252810161052e81612752565b6020808252810161052e816127b1565b6020808252810161052e81612810565b6020808252810161052e81612849565b6020808252810161052e816128a8565b6020808252810161052e81612907565b6020808252810161052e81612966565b6020808252810161052e816129c5565b6020808252810161052e81612a5d565b6020808252810161052e81612a96565b6020810161052e8284612acf565b60408101612d9f8285612acf565b6106ee6020830184612aea565b6020810161052e8284612ad8565b6020810161052e8284612ae1565b6020810161052e8284612aea565b60408101612de48285612ae1565b6106ee6020830184612ae1565b5190565b90815260200190565b919050565b600061052e82612e16565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061052e82612e3e565b60005b83811015612e75578181015183820152602001612e5d565b83811115611e175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612eb781612e03565b8114610a3657600080fd5b612eb781612e13565b612eb781612e2f565b612eb781612e3856fe556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a7231582068d42e51eae03f461fed8d2db904ba521e900521e0a2199b4a57d733502ad3da6c6578706572696d656e74616cf564736f6c63430005100040",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461036b578063e7a324dc1461037e578063f1127ed814610386578063fca3b5aa146103a7576101b9565b8063b4b5ea5714610332578063c3cda52014610345578063d505accf14610358576101b9565b8063782d6fe1116100d3578063782d6fe1146102e45780637ecebe001461030457806395d89b4114610317578063a9059cbb1461031f576101b9565b80636fcfff45146102b657806370a08231146102c957806376c71ca1146102dc576101b9565b806330adf81f1161016657806340c10f191161014057806340c10f1914610266578063587cde1e1461027b5780635c11d62f1461028e5780635c19a95c146102a3576101b9565b806330adf81f1461024157806330b36cef14610249578063313ce56714610251576101b9565b806318160ddd1161019757806318160ddd1461021157806320606b701461022657806323b872dd1461022e576101b9565b806306fdde03146101be57806307546172146101dc578063095ea7b3146101f1575b600080fd5b6101c66103ba565b6040516101d39190612c72565b60405180910390f35b6101e46103f3565b6040516101d39190612b45565b6102046101ff3660046122aa565b61040f565b6040516101d39190612b6e565b610219610534565b6040516101d39190612b7c565b61021961053a565b61020461023c3660046121c1565b610551565b6102196106f5565b610219610701565b610259610707565b6040516101d39190612dac565b6102796102743660046122aa565b61070c565b005b6101e4610289366004612161565b6109fc565b610296610a24565b6040516101d39190612d83565b6102796102b1366004612161565b610a2c565b6102966102c4366004612161565b610a39565b6102196102d7366004612161565b610a51565b610259610a87565b6102f76102f23660046122aa565b610a8c565b6040516101d39190612dc8565b610219610312366004612161565b610d6e565b6101c6610d80565b61020461032d3660046122aa565b610db9565b6102f7610340366004612161565b610df5565b6102796103533660046122da565b610ea3565b61027961036636600461220e565b611128565b610219610379366004612187565b61155d565b6102196115a3565b610399610394366004612361565b6115af565b6040516101d3929190612d91565b6102796103b5366004612161565b6115ea565b6040518060400160405280600781526020017f556e69737761700000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561046157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610486565b61048383604051806060016040528060248152602001613082602491396116d6565b90505b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610520908590612dba565b60405180910390a360019150505b92915050565b60005481565b60405161054690612b2f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926105bb9288929190613082908301396116d6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060757506bffffffffffffffffffffffff82811614155b156106db57600061063183836040518060600160405280603c8152602001612f02603c9139611728565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600360209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d1908590612dba565b60405180910390a3505b6106e687878361178b565b600193505050505b9392505050565b60405161054690612b24565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d13565b60405180910390fd5b6002544210156107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cd3565b73ffffffffffffffffffffffffffffffffffffffff82166107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cc3565b6107fd426301e133806119f2565b600281905550600061082782604051806060016040528060218152602001613061602191396116d6565b905061084361083c600054600260ff16611a31565b6064611a85565b816bffffffffffffffffffffffff16111561088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d03565b6108c56108a7600054836bffffffffffffffffffffffff166119f2565b604051806060016040528060268152602001612f3e602691396116d6565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260248084526109299491909116928592909190612ede90830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff841660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109bd908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408120546109f7921683611b22565b505050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610a363382611d69565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b600281565b6000438210610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cb3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff1680610b0257600091505061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610bda5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015610c2257600091505061052e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610d1657600282820363ffffffff16048103610c7261211e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610cf15760200151945061052e9350505050565b805163ffffffff16871115610d0857819350610d0f565b6001820392505b5050610c48565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60086020526000908152604090205481565b6040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525081565b600080610dde8360405180606001604052806025815260200161303c602591396116d6565b9050610deb33858361178b565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff1680610e2d5760006106ee565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610eb190612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985610f18611e1d565b30604051602001610f2c9493929190612c22565b6040516020818303038152906040528051906020012090506000604051610f5290612b3a565b604051908190038120610f6d918a908a908a90602001612be4565b60405160208183030381529060405280519060200120905060008282604051602001610f9a929190612af3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610fd79493929190612c57565b6020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ca3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915589146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d33565b87421115611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c83565b61111b818b611d69565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561117957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61119e565b61119b86604051806060016040528060238152602001612f99602391396116d6565b90505b60006040516111ac90612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985611213611e1d565b306040516020016112279493929190612c22565b604051602081830303815290604052805190602001209050600060405161124d90612b24565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602090815292902080546001810190915561129c9391928e928e928e9290918e9101612b8a565b604051602081830303815290604052805190602001209050600082826040516020016112c9929190612af3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113069493929190612c57565b6020604051602081039080840390855afa158015611328573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d63565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d73565b8842111561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d53565b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516115479190612dba565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161054690612b3a565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff16331461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d23565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916116879173ffffffffffffffffffffffffffffffffffffffff909116908490612b53565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff83166117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d43565b73ffffffffffffffffffffffffffffffffffffffff8216611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ce3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526035808452611882936bffffffffffffffffffffffff9092169285929190612f6490830139611728565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f80845261191494919091169285929091906130a690830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ab908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546109f792918216911683611b22565b6000828201838110156106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c93565b600082611a405750600061052e565b82820282848281611a4d57fe5b04146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cf3565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e21565b6000838301826bffffffffffffffffffffffff8087169083161015611b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57506000816bffffffffffffffffffffffff16115b156109f75773ffffffffffffffffffffffffffffffffffffffff831615611c6f5773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081611bc6576000611c36565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c5d828560405180606001604052806027815260200161301560279139611728565b9050611c6b86848484611e72565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156109f75773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081611cc4576000611d34565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d5b8285604051806060016040528060268152602001612fbc60269139611ac7565b905061112085848484611e72565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611e17828483611b22565b50505050565b4690565b60008183611e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b506000838581611e6857fe5b0495945050505050565b6000611e9643604051806060016040528060338152602001612fe2603391396120dc565b905060008463ffffffff16118015611f0a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611fa95773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612085565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516120cd929190612dd6565b60405180910390a25050505050565b6000816401000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b604080518082019091526000808252602082015290565b803561052e81612eae565b803561052e81612ec2565b803561052e81612ecb565b803561052e81612ed4565b60006020828403121561217357600080fd5b600061217f8484612135565b949350505050565b6000806040838503121561219a57600080fd5b60006121a68585612135565b92505060206121b785828601612135565b9150509250929050565b6000806000606084860312156121d657600080fd5b60006121e28686612135565b93505060206121f386828701612135565b925050604061220486828701612140565b9150509250925092565b600080600080600080600060e0888a03121561222957600080fd5b60006122358a8a612135565b97505060206122468a828b01612135565b96505060406122578a828b01612140565b95505060606122688a828b01612140565b94505060806122798a828b01612156565b93505060a061228a8a828b01612140565b92505060c061229b8a828b01612140565b91505092959891949750929550565b600080604083850312156122bd57600080fd5b60006122c98585612135565b92505060206121b785828601612140565b60008060008060008060c087890312156122f357600080fd5b60006122ff8989612135565b965050602061231089828a01612140565b955050604061232189828a01612140565b945050606061233289828a01612156565b935050608061234389828a01612140565b92505060a061235489828a01612140565b9150509295509295509295565b6000806040838503121561237457600080fd5b60006123808585612135565b92505060206121b78582860161214b565b61239a81612e03565b82525050565b61239a81612e0e565b61239a81612e13565b61239a6123be82612e13565b612e13565b60006123ce82612df1565b6123d88185612df5565b93506123e8818560208601612e5a565b6123f181612e86565b9093019392505050565b6000612408602583612df5565b7f556e693a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612467600283612dfe565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124a0601b83612df5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124d9602583612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612538602683612df5565b7f556e693a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612597602e83612df5565b7f556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b60006125f6605283612dfe565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061267b602283612df5565b7f556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126da604383612dfe565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061275f603983612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006127be602183612df5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061281d601c83612df5565b7f556e693a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612856602383612df5565b7f556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006128b5603d83612df5565b7f556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612914602183612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612973603b83612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006129d2601e83612df5565b7f556e693a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612a0b603a83612dfe565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612a6a601e83612df5565b7f556e693a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000612aa3601983612df5565b7f556e693a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b61239a81612e2f565b61239a81612e38565b61239a81612e4f565b61239a81612e3e565b6000612afe8261245a565b9150612b0a82856123b2565b602082019150612b1a82846123b2565b5060200192915050565b600061052e826125e9565b600061052e826126cd565b600061052e826129fe565b6020810161052e8284612391565b60408101612b618285612391565b6106ee6020830184612391565b6020810161052e82846123a0565b6020810161052e82846123a9565b60c08101612b9882896123a9565b612ba56020830188612391565b612bb26040830187612391565b612bbf60608301866123a9565b612bcc60808301856123a9565b612bd960a08301846123a9565b979650505050505050565b60808101612bf282876123a9565b612bff6020830186612391565b612c0c60408301856123a9565b612c1960608301846123a9565b95945050505050565b60808101612c3082876123a9565b612c3d60208301866123a9565b612c4a60408301856123a9565b612c196060830184612391565b60808101612c6582876123a9565b612bff6020830186612ad8565b602080825281016106ee81846123c3565b6020808252810161052e816123fb565b6020808252810161052e81612493565b6020808252810161052e816124cc565b6020808252810161052e8161252b565b6020808252810161052e8161258a565b6020808252810161052e8161266e565b6020808252810161052e81612752565b6020808252810161052e816127b1565b6020808252810161052e81612810565b6020808252810161052e81612849565b6020808252810161052e816128a8565b6020808252810161052e81612907565b6020808252810161052e81612966565b6020808252810161052e816129c5565b6020808252810161052e81612a5d565b6020808252810161052e81612a96565b6020810161052e8284612acf565b60408101612d9f8285612acf565b6106ee6020830184612aea565b6020810161052e8284612ad8565b6020810161052e8284612ae1565b6020810161052e8284612aea565b60408101612de48285612ae1565b6106ee6020830184612ae1565b5190565b90815260200190565b919050565b600061052e82612e16565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061052e82612e3e565b60005b83811015612e75578181015183820152602001612e5d565b83811115611e175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612eb781612e03565b8114610a3657600080fd5b612eb781612e13565b612eb781612e2f565b612eb781612e3856fe556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a7231582068d42e51eae03f461fed8d2db904ba521e900521e0a2199b4a57d733502ad3da6c6578706572696d656e74616cf564736f6c63430005100040",
      "srcmap": "86:16763:6:-;;;470:16;444:42;;3465:439;8:9:-1;5:2;;;30:1;27;20:12;5:2;3465:439:6;;;;;;;;;;;;;;;;;;;;;3587:15;3563:20;:39;;3555:109;;;;-1:-1:-1;;;3555:109:6;;;;;;;;;;;;;;;;;3702:11;;;-1:-1:-1;;;;;3675:17:6;;;;;:8;:17;;;;;;:39;;-1:-1:-1;;;;;;3675:39:6;-1:-1:-1;;;;;3675:39:6;;;;;;;;;;3759:11;;3729:42;;3675:17;;3702:11;3729:42;;;;3759:11;3729:42;;;;;;;;;;3781:6;:16;;-1:-1:-1;;;;;;3781:16:6;-1:-1:-1;;;;;3781:16:6;;;;;;;;;;;3812:33;;;;;;-1:-1:-1;;3838:6:6;;;3812:33;;;;;;;;;;3855:19;:42;-1:-1:-1;86:16763:6;;-1:-1:-1;86:16763:6;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:134;224:13;;242:33;224:13;242:33;;287:535;;;;436:2;424:9;415:7;411:23;407:32;404:2;;;452:1;449;442:12;404:2;487:1;504:64;560:7;540:9;504:64;;;494:74;;466:108;605:2;623:64;679:7;670:6;659:9;655:22;623:64;;;613:74;;584:109;724:2;742:64;798:7;789:6;778:9;774:22;742:64;;;732:74;;703:109;398:424;;;;;;829:142;920:45;959:5;920:45;;;915:3;908:58;902:69;;;978:113;1061:24;1079:5;1061:24;;1099:394;;1259:67;1323:2;1318:3;1259:67;;;1359:34;1339:55;;1428:27;1423:2;1414:12;;1407:49;1484:2;1475:12;;1245:248;-1:-1;;1245:248;1501:113;1584:24;1602:5;1584:24;;1621:340;1775:2;1760:18;;1789:79;1764:9;1841:6;1789:79;;;1879:72;1947:2;1936:9;1932:18;1923:6;1879:72;;;1746:215;;;;;;1968:407;2159:2;2173:47;;;2144:18;;2234:131;2144:18;2234:131;;2382:213;2500:2;2485:18;;2514:71;2489:9;2558:6;2514:71;;2603:163;2706:19;;;2755:4;2746:14;;2699:67;2774:91;;-1:-1;;;;;2934:54;;2836:24;2917:76;3000:72;3062:5;3045:27;3079:129;;3166:37;3197:5;3215:121;3294:37;3325:5;3294:37;;3458:117;3527:24;3545:5;3527:24;;;3520:5;3517:35;3507:2;;3566:1;3563;3556:12;3507:2;3501:74;;3582:117;3651:24;3669:5;3651:24;;3625:74;86:16763:6;;;;;;",
      "srcmap-runtime": "86:16763:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;86:16763:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:39;;;:::i;:::-;;;;;;;;;;;;;;;;560:21;;;:::i;:::-;;;;;;;;6351:406;;;;;;;;;:::i;:::-;;;;;;;;444:42;;;:::i;:::-;;;;;;;;1756:122;;;:::i;9358:656::-;;;;;;;;;:::i;2173:137::-;;;:::i;648:31::-;;;:::i;348:35::-;;;:::i;:::-;;;;;;;;4414:1039;;;;;;;;;:::i;:::-;;1221:45;;;;;;;;;:::i;729:61::-;;;:::i;:::-;;;;;;;;10156:100;;;;;;;;;:::i;1637:49::-;;;;;;;;;:::i;8462:106::-;;;;;;;;;:::i;882:33::-;;;:::i;12291:1185::-;;;;;;;;;:::i;:::-;;;;;;;;2388:39;;;;;;;;;:::i;251:37::-;;;:::i;8824:233::-;;;;;;;;;:::i;11650:219::-;;;;;;;;;:::i;10679:777::-;;;;;;;;;:::i;7235:1031::-;;;;;;;;;:::i;5749:134::-;;;;;;;;;:::i;1969:117::-;;;:::i;1501:70::-;;;;;;;;;:::i;:::-;;;;;;;;;4019:227;;;;;;;;;:::i;154:39::-;;;;;;;;;;;;;;;;;;;:::o;560:21::-;;;;;;:::o;6351:406::-;6419:4;6435:13;6480:2;6462:9;:21;6458:168;;;-1:-1:-1;6515:2:6;6458:168;;;6558:57;6565:9;6558:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;6549:66;;6458:168;6647:10;6636:22;;;;:10;:22;;;;;;;;;:31;;;;;;;;;;;:40;;;;;;;;;;6692:37;;6636:31;;6647:10;6692:37;;;;6636:40;;6692:37;;;;;;;;;;6746:4;6739:11;;;6351:406;;;;;:::o;444:42::-;;;;:::o;1756:122::-;1798:80;;;;;;;;;;;;;;1756:122;:::o;9358:656::-;9520:15;;;9440:4;9520:15;;;:10;:15;;;;;;;;9474:10;9520:24;;;;;;;;;;9570:57;;;;;;;;;;;;9474:10;;9520:24;;;;;9440:4;;9570:57;;9577:9;;9570:57;;;;;;;:6;:57::i;:::-;9554:73;;9653:3;9642:14;;:7;:14;;;;:48;;;;-1:-1:-1;9660:30:6;;;;;;9642:48;9638:305;;;9706:19;9728:95;9734:16;9752:6;9728:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;9837:15;;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;;;;;;;;9896:36;9837:39;;-1:-1:-1;9837:24:6;;9896:36;;;;9837:39;;9896:36;;;;;;;;;;9638:305;;9953:33;9969:3;9974;9979:6;9953:15;:33::i;:::-;10003:4;9996:11;;;;;9358:656;;;;;;:::o;2173:137::-;2215:95;;;;;;648:31;;;;:::o;348:35::-;381:2;348:35;:::o;4414:1039::-;4498:6;;;;4484:10;:20;4476:68;;;;;;;;;;;;;;;;;;;;;;4581:19;;4562:15;:38;;4554:85;;;;;;;;;;;;;;4657:17;;;4649:76;;;;;;;;;;;;;;4785:54;4798:15;778:12;4785;:54::i;:::-;4763:19;:76;;;;4877:13;4893:54;4900:9;4893:54;;;;;;;;;;;;;;;;;:6;:54::i;:::-;4877:70;;4975:53;4988:34;5001:11;;914:1;4988:34;;:12;:34::i;:::-;5024:3;4975:12;:53::i;:::-;4965:6;:63;;;;4957:104;;;;;;;;;;;;;;5085:83;5092:33;5105:11;;5118:6;5092:33;;:12;:33::i;:::-;5085:83;;;;;;;;;;;;;;;;;:6;:83::i;:::-;5071:97;;;;:11;:97;;;5249:13;;;;;:8;:13;;;;;;;;;;5243:68;;;;;;;;;;;;;;5249:13;;;;;5264:6;;5243:68;;;;;;;;:5;:68::i;:::-;5227:13;;;;;;;:8;:13;;;;;;:84;;;;;;;;;;;;;;;;5326:33;;5227:13;;;5326:33;;;;5352:6;;5326:33;;;;;;;;;;5423:14;;;;5419:1;5423:14;;;:9;:14;;;;;;5396:50;;5423:14;5439:6;5396:14;:50::i;:::-;4414:1039;;;:::o;1221:45::-;;;;;;;;;;;;;;;:::o;729:61::-;778:12;729:61;:::o;10156:100::-;10217:32;10227:10;10239:9;10217;:32::i;:::-;10156:100;:::o;1637:49::-;;;;;;;;;;;;;;;:::o;8462:106::-;8544:17;;8521:4;8544:17;;;:8;:17;;;;;;;;;8462:106::o;882:33::-;914:1;882:33;:::o;12291:1185::-;12370:6;12410:12;12396:11;:26;12388:77;;;;;;;;;;;;;;12498:23;;;12476:19;12498:23;;;:14;:23;;;;;;;;12535:17;12531:56;;12575:1;12568:8;;;;;12531:56;12644:20;;;;;;;:11;:20;;;;;;;;:38;12665:16;;;12644:38;;;;;;;;;:48;;:63;-1:-1:-1;12640:145:6;;12730:20;;;;;;;:11;:20;;;;;;;;12751:16;;;;;12730:38;;;;;;;;:44;;;;;;;-1:-1:-1;12723:51:6;;12640:145;12843:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;12839:86:6;;;12913:1;12906:8;;;;;12839:86;12935:12;12976:16;;;13002:418;13017:5;13009:13;;:5;:13;;;13002:418;;;13080:1;13063:13;;;13062:19;;;13054:27;;13122:20;;:::i;:::-;-1:-1:-1;13145:20:6;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;13122:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13191:27;;13187:223;;;13245:8;;;;-1:-1:-1;13238:15:6;;-1:-1:-1;;;;13238:15:6;13187:223;13278:12;;:26;;;-1:-1:-1;13274:136:6;;;13332:6;13324:14;;13274:136;;;13394:1;13385:6;:10;13377:18;;13274:136;13002:418;;;;;-1:-1:-1;13436:20:6;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;12291:1185:6;;;;:::o;2388:39::-;;;;;;;;;;;;;:::o;251:37::-;;;;;;;;;;;;;;;;;;;:::o;8824:233::-;8889:4;8905:13;8921:58;8928:9;8921:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;8905:74;;8989:40;9005:10;9017:3;9022:6;8989:15;:40::i;:::-;-1:-1:-1;9046:4:6;;8824:233;-1:-1:-1;;;8824:233:6:o;11650:219::-;11755:23;;;11715:6;11755:23;;;:14;:23;;;;;;;;11795:16;:67;;11861:1;11795:67;;;11814:20;;;;;;;:11;:20;;;;;;;;11835:16;;;11814:38;;;;;;;;;:44;;;;;;11788:74;11650:219;-1:-1:-1;;;11650:219:6:o;10679:777::-;10794:23;1798:80;;;;;;;;;;;;;;;;10874:4;;;;;;;;;;;;;;;;;;10858:22;10882:12;:10;:12::i;:::-;10904:4;10830:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10830:80:6;;;10820:91;;;;;;10794:117;;10921:18;2015:71;;;;;;;;;;;;;;;10952:57;;10984:9;;10995:5;;11002:6;;10952:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10952:57:6;;;10942:68;;;;;;10921:89;;11020:14;11076:15;11093:10;11047:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11047:57:6;;;11037:68;;;;;;11020:85;;11115:17;11135:26;11145:6;11153:1;11156;11159;11135:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11135:26:6;;;;;;-1:-1:-1;;11179:23:6;;;11171:73;;;;;;;;;;;;;;11271:17;;;;;;;:6;:17;;;;;:19;;;;;;;;11262:28;;11254:74;;;;;;;;;;;;;;11353:6;11346:3;:13;;11338:63;;;;;;;;;;;;;;11418:31;11428:9;11439;11418;:31::i;:::-;11411:38;;;;10679:777;;;;;;;:::o;7235:1031::-;7364:13;7409:2;7391:9;:21;7387:167;;;-1:-1:-1;7444:2:6;7387:167;;;7487:56;7494:9;7487:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;7478:65;;7387:167;7564:23;1798:80;;;;;;;;;;;;;;;;7644:4;;;;;;;;;;;;;;;;;;7628:22;7652:12;:10;:12::i;:::-;7674:4;7600:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7600:80:6;;;7590:91;;;;;;7564:117;;7691:18;2215:95;;;;;;;;;;;;;;;;7777:13;;;;;;;:6;:13;;;;;;;:15;;;;;;;;7722:81;;2215:95;;7750:5;;7757:7;;7766:9;;7777:15;;7794:8;;7722:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7722:81:6;;;7712:92;;;;;;7691:113;;7814:14;7870:15;7887:10;7841:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7841:57:6;;;7831:68;;;;;;7814:85;;7909:17;7929:26;7939:6;7947:1;7950;7953;7929:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7929:26:6;;;;;;-1:-1:-1;;7973:23:6;;;7965:66;;;;;;;;;;;;;;8062:5;8049:18;;:9;:18;;;8041:56;;;;;;;;;;;;;;8122:8;8115:3;:15;;8107:58;;;;;;;;;;;;;;8205:6;8176:10;:17;8187:5;8176:17;;;;;;;;;;;;;;;:26;8194:7;8176:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;8243:7;8227:32;;8236:5;8227:32;;;8252:6;8227:32;;;;;;;;;;;;;;;7235:1031;;;;;;;;;;;;:::o;5749:134::-;5848:19;;;;5825:4;5848:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;5749:134::o;1969:117::-;2015:71;;;;;;1501:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4019:227::-;4096:6;;;;4082:10;:20;4074:94;;;;;;;;;;;;;;4197:6;;4183:30;;;;;;4197:6;;;;;4205:7;;4183:30;;;;;;;;;;4223:6;:16;;;;;;;;;;;;;;;4019:227::o;16176:158::-;16251:6;16288:12;16281:5;16277:9;;16269:32;;;;;;;;;;;;;;;-1:-1:-1;16325:1:6;;16176:158;-1:-1:-1;;16176:158:6:o;16530:162::-;16616:6;16647:1;16642:6;;:1;:6;;;;16650:12;16634:29;;;;;;;;;;;;;;;;-1:-1:-1;;;16680:5:6;;;16530:162::o;13855:601::-;13948:17;;;13940:89;;;;;;;;;;;;;;14047:17;;;14039:87;;;;;;;;;;;;;;14159:13;;;;;;;:8;:13;;;;;;;;;;14153:85;;;;;;;;;;;;;;14159:13;;;;;14174:6;;14153:85;;;;;;;:5;:85::i;:::-;14137:13;;;;;;;;:8;:13;;;;;;;;:101;;;;;;;;;;;14270:13;;;;;;;;;;14264:79;;;;;;;;;;;;;;14270:13;;;;;14285:6;;14264:79;;;;;;;;:5;:79::i;:::-;14248:13;;;;;;;;:8;:13;;;;;;;:95;;;;;;;;;;;;;;;;14358:26;;;;;;;;;;14377:6;;14358:26;;;;;;;;;;14410:14;;;;;;;;:9;:14;;;;;;;14426;;;;;;;;14395:54;;14410:14;;;;14426;14442:6;14395:14;:54::i;959:176:3:-;1017:7;1048:5;;;1071:6;;;;1063:46;;;;;;;;;;;;;2656:459;2714:7;2955:6;2951:45;;-1:-1:-1;2984:1:3;2977:8;;2951:45;3018:5;;;3022:1;3018;:5;:1;3041:5;;;;;:10;3033:56;;;;;;;;;;;;;4267:130;4325:7;4351:39;4355:1;4358;4351:39;;;;;;;;;;;;;;;;;:3;:39::i;16340:184:6:-;16426:6;16455:5;;;16486:12;16478:6;;;;;;;;;16470:29;;;;;;;;;;;;;;;-1:-1:-1;16516:1:6;16340:184;-1:-1:-1;;;;16340:184:6:o;14462:921::-;14566:6;14556:16;;:6;:16;;;;:30;;;;;14585:1;14576:6;:10;;;14556:30;14552:825;;;14606:20;;;;14602:376;;14665:22;;;14646:16;14665:22;;;:14;:22;;;;;;;;;14724:13;:60;;14783:1;14724:60;;;14740:19;;;;;;;:11;:19;;;;;;;;14760:13;;;14740:34;;;;;;;;;:40;;;;;;14724:60;14705:79;;14802:16;14821:67;14827:9;14838:6;14821:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14802:86;;14906:57;14923:6;14931:9;14942;14953;14906:16;:57::i;:::-;14602:376;;;;14996:20;;;;14992:375;;15055:22;;;15036:16;15055:22;;;:14;:22;;;;;;;;;15114:13;:60;;15173:1;15114:60;;;15130:19;;;;;;;:11;:19;;;;;;;;15150:13;;;15130:34;;;;;;;;;:40;;;;;;15114:60;15095:79;;15192:16;15211:66;15217:9;15228:6;15211:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;15192:85;;15295:57;15312:6;15320:9;15331;15342;15295:16;:57::i;13482:367::-;13584:20;;;;13558:23;13584:20;;;:9;:20;;;;;;;;;;13640:8;:19;;;;;;13669:20;;;;:32;;;;;;;;;;;13717:54;;13584:20;;;;;13640:19;;;;;13669:32;;13584:20;;;13717:54;;13558:23;13717:54;13782:60;13797:15;13814:9;13825:16;13782:14;:60::i;:::-;13482:367;;;;:::o;16698:149::-;16806:9;16698:149;:::o;4872:338:3:-;4958:7;5058:12;5051:5;5043:28;;;;;;;;;;;;;;;;5081:9;5097:1;5093;:5;;;;;;;4872:338;-1:-1:-1;;;;;4872:338:3:o;15389:617:6:-;15506:18;15527:75;15534:12;15527:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;15506:96;;15630:1;15615:12;:16;;;:85;;;;-1:-1:-1;15635:22:6;;;;;;;:11;:22;;;;;;;;:65;15658:16;;;15635:40;;;;;;;;;:50;:65;;;:50;;:65;15615:85;15611:324;;;15714:22;;;;;;;:11;:22;;;;;;;;15737:16;;;15714:40;;;;;;;;;:57;;;;;;;;;;;;15611:324;;;15837:33;;;;;;;;;;;;;;;;;;;;;;;;;15798:22;;;-1:-1:-1;15798:22:6;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15882:25;;;:14;:25;;;;;;;:44;;15798:72;15910:16;;15882:44;;;;;;;;;;;;;15611:324;15969:9;15948:51;;;15980:8;15990;15948:51;;;;;;;;;;;;;;;;15389:617;;;;;:::o;16012:158::-;16087:6;16124:12;16117:5;16113:9;;16105:32;;;;;;;;;;;;;;86:16763;;;;;;;;;;-1:-1:-1;86:16763:6;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;4648:113;4731:24;4749:5;4731:24;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5230:39;;;;5019:255;-1:-1;;;5019:255;5628:374;;5788:67;5852:2;5847:3;5788:67;;;5888:34;5868:55;;5957:7;5952:2;5943:12;;5936:29;5993:2;5984:12;;5774:228;-1:-1;;5774:228;6011:398;;6189:84;6271:1;6266:3;6189:84;;;6306:66;6286:87;;6401:1;6392:11;;6175:234;-1:-1;;6175:234;6418:327;;6578:67;6642:2;6637:3;6578:67;;;6678:29;6658:50;;6736:2;6727:12;;6564:181;-1:-1;;6564:181;6754:374;;6914:67;6978:2;6973:3;6914:67;;;7014:34;6994:55;;7083:7;7078:2;7069:12;;7062:29;7119:2;7110:12;;6900:228;-1:-1;;6900:228;7137:375;;7297:67;7361:2;7356:3;7297:67;;;7397:34;7377:55;;7466:8;7461:2;7452:12;;7445:30;7503:2;7494:12;;7283:229;-1:-1;;7283:229;7521:383;;7681:67;7745:2;7740:3;7681:67;;;7781:34;7761:55;;7850:16;7845:2;7836:12;;7829:38;7895:2;7886:12;;7667:237;-1:-1;;7667:237;7913:492;;8091:85;8173:2;8168:3;8091:85;;;8209:34;8189:55;;8278:34;8273:2;8264:12;;8257:56;8347:20;8342:2;8333:12;;8326:42;8396:2;8387:12;;8077:328;-1:-1;;8077:328;8414:371;;8574:67;8638:2;8633:3;8574:67;;;8674:34;8654:55;;8743:4;8738:2;8729:12;;8722:26;8776:2;8767:12;;8560:225;-1:-1;;8560:225;8794:477;;8972:85;9054:2;9049:3;8972:85;;;9090:34;9070:55;;9159:34;9154:2;9145:12;;9138:56;9228:5;9223:2;9214:12;;9207:27;9262:2;9253:12;;8958:313;-1:-1;;8958:313;9280:394;;9440:67;9504:2;9499:3;9440:67;;;9540:34;9520:55;;9609:27;9604:2;9595:12;;9588:49;9665:2;9656:12;;9426:248;-1:-1;;9426:248;9683:370;;9843:67;9907:2;9902:3;9843:67;;;9943:34;9923:55;;10012:3;10007:2;9998:12;;9991:25;10044:2;10035:12;;9829:224;-1:-1;;9829:224;10062:328;;10222:67;10286:2;10281:3;10222:67;;;10322:30;10302:51;;10381:2;10372:12;;10208:182;-1:-1;;10208:182;10399:372;;10559:67;10623:2;10618:3;10559:67;;;10659:34;10639:55;;10728:5;10723:2;10714:12;;10707:27;10762:2;10753:12;;10545:226;-1:-1;;10545:226;10780:398;;10940:67;11004:2;10999:3;10940:67;;;11040:34;11020:55;;11109:31;11104:2;11095:12;;11088:53;11169:2;11160:12;;10926:252;-1:-1;;10926:252;11187:370;;11347:67;11411:2;11406:3;11347:67;;;11447:34;11427:55;;11516:3;11511:2;11502:12;;11495:25;11548:2;11539:12;;11333:224;-1:-1;;11333:224;11566:396;;11726:67;11790:2;11785:3;11726:67;;;11826:34;11806:55;;11895:29;11890:2;11881:12;;11874:51;11953:2;11944:12;;11712:250;-1:-1;;11712:250;11971:330;;12131:67;12195:2;12190:3;12131:67;;;12231:32;12211:53;;12292:2;12283:12;;12117:184;-1:-1;;12117:184;12310:431;;12488:85;12570:2;12565:3;12488:85;;;12606:34;12586:55;;12675:28;12670:2;12661:12;;12654:50;12732:2;12723:12;;12474:267;-1:-1;;12474:267;12750:330;;12910:67;12974:2;12969:3;12910:67;;;13010:32;12990:53;;13071:2;13062:12;;12896:184;-1:-1;;12896:184;13089:325;;13249:67;13313:2;13308:3;13249:67;;;13349:27;13329:48;;13405:2;13396:12;;13235:179;-1:-1;;13235:179;13542:110;13623:23;13640:5;13623:23;;13659:107;13738:22;13754:5;13738:22;;13773:124;13855:36;13885:5;13855:36;;13904:110;13985:23;14002:5;13985:23;;14021:650;;14276:148;14420:3;14276:148;;;14269:155;;14435:75;14506:3;14497:6;14435:75;;;14532:2;14527:3;14523:12;14516:19;;14546:75;14617:3;14608:6;14546:75;;;-1:-1;14643:2;14634:12;;14257:414;-1:-1;;14257:414;14678:372;;14877:148;15021:3;14877:148;;15057:372;;15256:148;15400:3;15256:148;;15436:372;;15635:148;15779:3;15635:148;;15815:213;15933:2;15918:18;;15947:71;15922:9;15991:6;15947:71;;16035:324;16181:2;16166:18;;16195:71;16170:9;16239:6;16195:71;;;16277:72;16345:2;16334:9;16330:18;16321:6;16277:72;;16366:201;16478:2;16463:18;;16492:65;16467:9;16530:6;16492:65;;16574:213;16692:2;16677:18;;16706:71;16681:9;16750:6;16706:71;;16794:771;17052:3;17037:19;;17067:71;17041:9;17111:6;17067:71;;;17149:72;17217:2;17206:9;17202:18;17193:6;17149:72;;;17232;17300:2;17289:9;17285:18;17276:6;17232:72;;;17315;17383:2;17372:9;17368:18;17359:6;17315:72;;;17398:73;17466:3;17455:9;17451:19;17442:6;17398:73;;;17482;17550:3;17539:9;17535:19;17526:6;17482:73;;;17023:542;;;;;;;;;;17572:547;17774:3;17759:19;;17789:71;17763:9;17833:6;17789:71;;;17871:72;17939:2;17928:9;17924:18;17915:6;17871:72;;;17954;18022:2;18011:9;18007:18;17998:6;17954:72;;;18037;18105:2;18094:9;18090:18;18081:6;18037:72;;;17745:374;;;;;;;;18126:547;18328:3;18313:19;;18343:71;18317:9;18387:6;18343:71;;;18425:72;18493:2;18482:9;18478:18;18469:6;18425:72;;;18508;18576:2;18565:9;18561:18;18552:6;18508:72;;;18591;18659:2;18648:9;18644:18;18635:6;18591:72;;18680:539;18878:3;18863:19;;18893:71;18867:9;18937:6;18893:71;;;18975:68;19039:2;19028:9;19024:18;19015:6;18975:68;;19226:293;19360:2;19374:47;;;19345:18;;19435:74;19345:18;19495:6;19435:74;;19834:407;20025:2;20039:47;;;20010:18;;20100:131;20010:18;20100:131;;20248:407;20439:2;20453:47;;;20424:18;;20514:131;20424:18;20514:131;;20662:407;20853:2;20867:47;;;20838:18;;20928:131;20838:18;20928:131;;21076:407;21267:2;21281:47;;;21252:18;;21342:131;21252:18;21342:131;;21490:407;21681:2;21695:47;;;21666:18;;21756:131;21666:18;21756:131;;21904:407;22095:2;22109:47;;;22080:18;;22170:131;22080:18;22170:131;;22318:407;22509:2;22523:47;;;22494:18;;22584:131;22494:18;22584:131;;22732:407;22923:2;22937:47;;;22908:18;;22998:131;22908:18;22998:131;;23146:407;23337:2;23351:47;;;23322:18;;23412:131;23322:18;23412:131;;23560:407;23751:2;23765:47;;;23736:18;;23826:131;23736:18;23826:131;;23974:407;24165:2;24179:47;;;24150:18;;24240:131;24150:18;24240:131;;24388:407;24579:2;24593:47;;;24564:18;;24654:131;24564:18;24654:131;;24802:407;24993:2;25007:47;;;24978:18;;25068:131;24978:18;25068:131;;25216:407;25407:2;25421:47;;;25392:18;;25482:131;25392:18;25482:131;;25630:407;25821:2;25835:47;;;25806:18;;25896:131;25806:18;25896:131;;26044:407;26235:2;26249:47;;;26220:18;;26310:131;26220:18;26310:131;;26678:209;26794:2;26779:18;;26808:69;26783:9;26850:6;26808:69;;26894:316;27036:2;27021:18;;27050:69;27025:9;27092:6;27050:69;;;27130:70;27196:2;27185:9;27181:18;27172:6;27130:70;;27217:205;27331:2;27316:18;;27345:67;27320:9;27385:6;27345:67;;27429:211;27546:2;27531:18;;27560:70;27535:9;27603:6;27560:70;;27647:209;27763:2;27748:18;;27777:69;27752:9;27819:6;27777:69;;27863:320;28007:2;27992:18;;28021:70;27996:9;28064:6;28021:70;;;28102:71;28169:2;28158:9;28154:18;28145:6;28102:71;;28190:118;28274:12;;28245:63;28445:163;28548:19;;;28597:4;28588:14;;28541:67;28617:145;28753:3;28731:31;-1:-1;28731:31;28770:91;;28832:24;28850:5;28832:24;;28868:85;28934:13;28927:21;;28910:43;28960:72;29022:5;29005:27;29039:121;29112:42;29101:54;;29084:76;29246:88;29318:10;29307:22;;29290:44;29341:81;29412:4;29401:16;;29384:38;29429:104;29501:26;29490:38;;29473:60;29540:106;;29618:23;29635:5;29618:23;;29654:268;29719:1;29726:101;29740:6;29737:1;29734:13;29726:101;;;29807:11;;;29801:18;29788:11;;;29781:39;29762:2;29755:10;29726:101;;;29842:6;29839:1;29836:13;29833:2;;;-1:-1;;29907:1;29889:16;;29882:27;29703:219;30011:97;30099:2;30079:14;30095:7;30075:28;;30059:49;30116:117;30185:24;30203:5;30185:24;;;30178:5;30175:35;30165:2;;30224:1;30221;30214:12;30240:117;30309:24;30327:5;30309:24;;30488:115;30556:23;30573:5;30556:23;;30610:113;30677:22;30693:5;30677:22;"
    }
  },
  "errors": [
    {
      "component": "general",
      "formattedMessage": "contracts/GovernorAlpha.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
      "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
      "severity": "warning",
      "sourceLocation": {
        "end": 58,
        "file": "contracts/GovernorAlpha.sol",
        "start": 25
      },
      "type": "Warning"
    },
    {
      "component": "general",
      "formattedMessage": "contracts/Uni.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
      "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
      "severity": "warning",
      "sourceLocation": {
        "end": 58,
        "file": "contracts/Uni.sol",
        "start": 25
      },
      "type": "Warning"
    }
  ],
  "sources": {
    "contracts/FeeTo.sol": {
      "id": 0,
      "AST": {
        "absolutePath": "contracts/FeeTo.sol",
        "exportedSymbols": {
          "FeeTo": [
            352
          ],
          "IUniswapV2Pair": [
            388
          ]
        },
        "id": 389,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1,
            "literals": [
              "solidity",
              "^",
              "0.5",
              ".16"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:0"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 352,
            "linearizedBaseContracts": [
              352
            ],
            "name": "FeeTo",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "id": 3,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 352,
                "src": "265:20:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "265:7:0",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 5,
                "name": "feeRecipient",
                "nodeType": "VariableDeclaration",
                "scope": 352,
                "src": "291:27:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "291:7:0",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "canonicalName": "FeeTo.TokenAllowState",
                "id": 10,
                "members": [
                  {
                    "constant": false,
                    "id": 7,
                    "name": "allowed",
                    "nodeType": "VariableDeclaration",
                    "scope": 10,
                    "src": "358:15:0",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 6,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "358:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 9,
                    "name": "disallowCount",
                    "nodeType": "VariableDeclaration",
                    "scope": 10,
                    "src": "383:21:0",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 8,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "383:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "TokenAllowState",
                "nodeType": "StructDefinition",
                "scope": 352,
                "src": "325:86:0",
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 14,
                "name": "tokenAllowStates",
                "nodeType": "VariableDeclaration",
                "scope": 352,
                "src": "416:59:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TokenAllowState_$10_storage_$",
                  "typeString": "mapping(address => struct FeeTo.TokenAllowState)"
                },
                "typeName": {
                  "id": 13,
                  "keyType": {
                    "id": 11,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "424:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "416:35:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TokenAllowState_$10_storage_$",
                    "typeString": "mapping(address => struct FeeTo.TokenAllowState)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 12,
                    "name": "TokenAllowState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10,
                    "src": "435:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                      "typeString": "struct FeeTo.TokenAllowState"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "canonicalName": "FeeTo.PairAllowState",
                "id": 19,
                "members": [
                  {
                    "constant": false,
                    "id": 16,
                    "name": "token0DisallowCount",
                    "nodeType": "VariableDeclaration",
                    "scope": 19,
                    "src": "514:27:0",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 15,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "514:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 18,
                    "name": "token1DisallowCount",
                    "nodeType": "VariableDeclaration",
                    "scope": 19,
                    "src": "551:27:0",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "typeName": {
                      "id": 17,
                      "name": "uint128",
                      "nodeType": "ElementaryTypeName",
                      "src": "551:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "PairAllowState",
                "nodeType": "StructDefinition",
                "scope": 352,
                "src": "482:103:0",
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 23,
                "name": "pairAllowStates",
                "nodeType": "VariableDeclaration",
                "scope": 352,
                "src": "590:57:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PairAllowState_$19_storage_$",
                  "typeString": "mapping(address => struct FeeTo.PairAllowState)"
                },
                "typeName": {
                  "id": 22,
                  "keyType": {
                    "id": 20,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "598:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "590:34:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PairAllowState_$19_storage_$",
                    "typeString": "mapping(address => struct FeeTo.PairAllowState)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 21,
                    "name": "PairAllowState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 19,
                    "src": "609:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                      "typeString": "struct FeeTo.PairAllowState"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 32,
                  "nodeType": "Block",
                  "src": "689:31:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 30,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 28,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3,
                          "src": "699:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 29,
                          "name": "owner_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "707:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "699:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 31,
                      "nodeType": "ExpressionStatement",
                      "src": "699:14:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 33,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 26,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 25,
                      "name": "owner_",
                      "nodeType": "VariableDeclaration",
                      "scope": 33,
                      "src": "666:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 24,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "666:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "665:16:0"
                },
                "returnParameters": {
                  "id": 27,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "689:0:0"
                },
                "scope": 352,
                "src": "654:66:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 50,
                  "nodeType": "Block",
                  "src": "767:101:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 42,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "785:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 40,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "785:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 41,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3,
                              "src": "799:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "785:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f3a3a7365744f776e65723a206e6f7420616c6c6f776564",
                            "id": 43,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "806:30:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ffbc268fdb44d4e854a31c5d9fb81108092e719fe7f0d655f595d693baa37a2",
                              "typeString": "literal_string \"FeeTo::setOwner: not allowed\""
                            },
                            "value": "FeeTo::setOwner: not allowed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1ffbc268fdb44d4e854a31c5d9fb81108092e719fe7f0d655f595d693baa37a2",
                              "typeString": "literal_string \"FeeTo::setOwner: not allowed\""
                            }
                          ],
                          "id": 38,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "777:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 44,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "777:60:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 45,
                      "nodeType": "ExpressionStatement",
                      "src": "777:60:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 48,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 46,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3,
                          "src": "847:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 47,
                          "name": "owner_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 35,
                          "src": "855:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "847:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 49,
                      "nodeType": "ExpressionStatement",
                      "src": "847:14:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 51,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setOwner",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 36,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 35,
                      "name": "owner_",
                      "nodeType": "VariableDeclaration",
                      "scope": 51,
                      "src": "744:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 34,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "744:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "743:16:0"
                },
                "returnParameters": {
                  "id": 37,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "767:0:0"
                },
                "scope": 352,
                "src": "726:142:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 68,
                  "nodeType": "Block",
                  "src": "929:122:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 60,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 57,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "947:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 58,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "947:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 59,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3,
                              "src": "961:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "947:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f3a3a736574466565526563697069656e743a206e6f7420616c6c6f776564",
                            "id": 61,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "968:37:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_763ff1f102bada5aa52b1cec87d5b4c73ddce91823ce8eeea8fef7747bdd3226",
                              "typeString": "literal_string \"FeeTo::setFeeRecipient: not allowed\""
                            },
                            "value": "FeeTo::setFeeRecipient: not allowed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_763ff1f102bada5aa52b1cec87d5b4c73ddce91823ce8eeea8fef7747bdd3226",
                              "typeString": "literal_string \"FeeTo::setFeeRecipient: not allowed\""
                            }
                          ],
                          "id": 56,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "939:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 62,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "939:67:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 63,
                      "nodeType": "ExpressionStatement",
                      "src": "939:67:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 66,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 64,
                          "name": "feeRecipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5,
                          "src": "1016:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 65,
                          "name": "feeRecipient_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 53,
                          "src": "1031:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1016:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 67,
                      "nodeType": "ExpressionStatement",
                      "src": "1016:28:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 69,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeRecipient",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 54,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 53,
                      "name": "feeRecipient_",
                      "nodeType": "VariableDeclaration",
                      "scope": 69,
                      "src": "899:21:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 52,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "899:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "898:23:0"
                },
                "returnParameters": {
                  "id": 55,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "929:0:0"
                },
                "scope": 352,
                "src": "874:177:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 125,
                  "nodeType": "Block",
                  "src": "1124:822:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 80,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 77,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "1142:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 78,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1142:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 79,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3,
                              "src": "1156:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1142:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f3a3a757064617465546f6b656e416c6c6f7753746174653a206e6f7420616c6c6f776564",
                            "id": 81,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1163:43:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b4bed03e1ae11dc2c3fb104a5833337d688ebaf962183caa90f79f56b534444f",
                              "typeString": "literal_string \"FeeTo::updateTokenAllowState: not allowed\""
                            },
                            "value": "FeeTo::updateTokenAllowState: not allowed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b4bed03e1ae11dc2c3fb104a5833337d688ebaf962183caa90f79f56b534444f",
                              "typeString": "literal_string \"FeeTo::updateTokenAllowState: not allowed\""
                            }
                          ],
                          "id": 76,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1134:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 82,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1134:73:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 83,
                      "nodeType": "ExpressionStatement",
                      "src": "1134:73:0"
                    },
                    {
                      "assignments": [
                        85
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 85,
                          "name": "tokenAllowState",
                          "nodeType": "VariableDeclaration",
                          "scope": 125,
                          "src": "1217:39:0",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                            "typeString": "struct FeeTo.TokenAllowState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 84,
                            "name": "TokenAllowState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 10,
                            "src": "1217:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                              "typeString": "struct FeeTo.TokenAllowState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 89,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 86,
                          "name": "tokenAllowStates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14,
                          "src": "1259:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TokenAllowState_$10_storage_$",
                            "typeString": "mapping(address => struct FeeTo.TokenAllowState storage ref)"
                          }
                        },
                        "id": 88,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 87,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71,
                          "src": "1276:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1259:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage",
                          "typeString": "struct FeeTo.TokenAllowState storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1217:65:0"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 93,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 90,
                          "name": "allowed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 73,
                          "src": "1359:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 91,
                            "name": "tokenAllowState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 85,
                            "src": "1370:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                              "typeString": "struct FeeTo.TokenAllowState storage pointer"
                            }
                          },
                          "id": 92,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "allowed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7,
                          "src": "1370:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1359:34:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 124,
                      "nodeType": "IfStatement",
                      "src": "1355:585:0",
                      "trueBody": {
                        "id": 123,
                        "nodeType": "Block",
                        "src": "1395:545:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 98,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 94,
                                  "name": "tokenAllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 85,
                                  "src": "1409:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                    "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                  }
                                },
                                "id": 96,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "allowed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7,
                                "src": "1409:23:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 97,
                                "name": "allowed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 73,
                                "src": "1435:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1409:33:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 99,
                            "nodeType": "ExpressionStatement",
                            "src": "1409:33:0"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 100,
                                  "name": "tokenAllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 85,
                                  "src": "1733:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                    "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                  }
                                },
                                "id": 101,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "disallowCount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9,
                                "src": "1733:29:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1766:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1733:34:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 111,
                                  "name": "allowed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 73,
                                  "src": "1845:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 112,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1856:5:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "1845:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 121,
                              "nodeType": "IfStatement",
                              "src": "1841:89:0",
                              "trueBody": {
                                "id": 120,
                                "nodeType": "Block",
                                "src": "1863:67:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 118,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 114,
                                          "name": "tokenAllowState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 85,
                                          "src": "1881:15:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                            "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                          }
                                        },
                                        "id": 116,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "disallowCount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9,
                                        "src": "1881:29:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 117,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1914:1:0",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1881:34:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 119,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1881:34:0"
                                  }
                                ]
                              }
                            },
                            "id": 122,
                            "nodeType": "IfStatement",
                            "src": "1729:201:0",
                            "trueBody": {
                              "id": 110,
                              "nodeType": "Block",
                              "src": "1769:66:0",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 104,
                                        "name": "tokenAllowState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 85,
                                        "src": "1787:15:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                          "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                        }
                                      },
                                      "id": 106,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "disallowCount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9,
                                      "src": "1787:29:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 107,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1819:1:0",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "1787:33:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 109,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1787:33:0"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 126,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "updateTokenAllowState",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 74,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 71,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 126,
                      "src": "1088:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 70,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1088:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 73,
                      "name": "allowed",
                      "nodeType": "VariableDeclaration",
                      "scope": 126,
                      "src": "1103:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 72,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1103:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1087:29:0"
                },
                "returnParameters": {
                  "id": 75,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1124:0:0"
                },
                "scope": 352,
                "src": "1057:889:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 153,
                  "nodeType": "Block",
                  "src": "2030:119:0",
                  "statements": [
                    {
                      "body": {
                        "id": 151,
                        "nodeType": "Block",
                        "src": "2077:66:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 145,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 129,
                                    "src": "2113:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 147,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 146,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 135,
                                    "src": "2120:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2113:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 148,
                                  "name": "allowed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 131,
                                  "src": "2124:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 144,
                                "name": "updateTokenAllowState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 126,
                                "src": "2091:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                                  "typeString": "function (address,bool)"
                                }
                              },
                              "id": 149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2091:41:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 150,
                            "nodeType": "ExpressionStatement",
                            "src": "2091:41:0"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 137,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 135,
                          "src": "2053:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 138,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 129,
                            "src": "2057:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2057:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2053:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 152,
                      "initializationExpression": {
                        "assignments": [
                          135
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 135,
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "scope": 152,
                            "src": "2045:6:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 134,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "2045:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 136,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2045:6:0"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "2072:3:0",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 141,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 135,
                            "src": "2072:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 143,
                        "nodeType": "ExpressionStatement",
                        "src": "2072:3:0"
                      },
                      "nodeType": "ForStatement",
                      "src": "2040:103:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 154,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "updateTokenAllowStates",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 132,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 129,
                      "name": "tokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 154,
                      "src": "1984:23:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 127,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1984:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 128,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1984:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 131,
                      "name": "allowed",
                      "nodeType": "VariableDeclaration",
                      "scope": 154,
                      "src": "2009:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 130,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2009:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1983:39:0"
                },
                "returnParameters": {
                  "id": 133,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2030:0:0"
                },
                "scope": 352,
                "src": "1952:197:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 265,
                  "nodeType": "Block",
                  "src": "2215:1835:0",
                  "statements": [
                    {
                      "assignments": [
                        162
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 162,
                          "name": "pairAllowState",
                          "nodeType": "VariableDeclaration",
                          "scope": 265,
                          "src": "2225:37:0",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                            "typeString": "struct FeeTo.PairAllowState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 161,
                            "name": "PairAllowState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 19,
                            "src": "2225:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                              "typeString": "struct FeeTo.PairAllowState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 166,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 163,
                          "name": "pairAllowStates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "2265:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PairAllowState_$19_storage_$",
                            "typeString": "mapping(address => struct FeeTo.PairAllowState storage ref)"
                          }
                        },
                        "id": 165,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 164,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 156,
                          "src": "2281:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2265:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PairAllowState_$19_storage",
                          "typeString": "struct FeeTo.PairAllowState storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2225:61:0"
                    },
                    {
                      "assignments": [
                        168
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 168,
                          "name": "token0AllowState",
                          "nodeType": "VariableDeclaration",
                          "scope": 265,
                          "src": "2296:40:0",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                            "typeString": "struct FeeTo.TokenAllowState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 167,
                            "name": "TokenAllowState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 10,
                            "src": "2296:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                              "typeString": "struct FeeTo.TokenAllowState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 176,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 169,
                          "name": "tokenAllowStates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14,
                          "src": "2339:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TokenAllowState_$10_storage_$",
                            "typeString": "mapping(address => struct FeeTo.TokenAllowState storage ref)"
                          }
                        },
                        "id": 175,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 171,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 156,
                                  "src": "2371:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 170,
                                "name": "IUniswapV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 388,
                                "src": "2356:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                  "typeString": "type(contract IUniswapV2Pair)"
                                }
                              },
                              "id": 172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2356:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                "typeString": "contract IUniswapV2Pair"
                              }
                            },
                            "id": 173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 357,
                            "src": "2356:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2356:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2339:47:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage",
                          "typeString": "struct FeeTo.TokenAllowState storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2296:90:0"
                    },
                    {
                      "assignments": [
                        178
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 178,
                          "name": "token1AllowState",
                          "nodeType": "VariableDeclaration",
                          "scope": 265,
                          "src": "2396:40:0",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                            "typeString": "struct FeeTo.TokenAllowState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 177,
                            "name": "TokenAllowState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 10,
                            "src": "2396:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                              "typeString": "struct FeeTo.TokenAllowState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 186,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 179,
                          "name": "tokenAllowStates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14,
                          "src": "2439:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TokenAllowState_$10_storage_$",
                            "typeString": "mapping(address => struct FeeTo.TokenAllowState storage ref)"
                          }
                        },
                        "id": 185,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 181,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 156,
                                  "src": "2471:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 180,
                                "name": "IUniswapV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 388,
                                "src": "2456:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                  "typeString": "type(contract IUniswapV2Pair)"
                                }
                              },
                              "id": 182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2456:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                "typeString": "contract IUniswapV2Pair"
                              }
                            },
                            "id": 183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 362,
                            "src": "2456:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2456:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2439:47:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage",
                          "typeString": "struct FeeTo.TokenAllowState storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2396:90:0"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 187,
                                  "name": "token0AllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 168,
                                  "src": "2862:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                    "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                  }
                                },
                                "id": 188,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7,
                                "src": "2862:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2890:5:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "src": "2862:33:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 191,
                                  "name": "token1AllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 178,
                                  "src": "2911:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                    "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                  }
                                },
                                "id": 192,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7,
                                "src": "2911:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2939:5:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "src": "2911:33:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2862:82:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 196,
                                "name": "token0AllowState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 168,
                                "src": "2960:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                  "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                }
                              },
                              "id": 197,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "disallowCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9,
                              "src": "2960:30:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 198,
                                "name": "pairAllowState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "2993:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                                  "typeString": "struct FeeTo.PairAllowState storage pointer"
                                }
                              },
                              "id": 199,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token0DisallowCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16,
                              "src": "2993:34:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "2960:67:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2862:165:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 202,
                              "name": "token1AllowState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 178,
                              "src": "3043:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                "typeString": "struct FeeTo.TokenAllowState storage pointer"
                              }
                            },
                            "id": 203,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "disallowCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9,
                            "src": "3043:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 204,
                              "name": "pairAllowState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 162,
                              "src": "3076:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                                "typeString": "struct FeeTo.PairAllowState storage pointer"
                              }
                            },
                            "id": 205,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token1DisallowCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18,
                            "src": "3076:34:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "3043:67:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2862:248:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 264,
                      "nodeType": "IfStatement",
                      "src": "2845:1199:0",
                      "trueBody": {
                        "id": 263,
                        "nodeType": "Block",
                        "src": "3121:923:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 208,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 159,
                                "src": "3135:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 214,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3851,
                                        "src": "3182:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_FeeTo_$352",
                                          "typeString": "contract FeeTo"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_FeeTo_$352",
                                          "typeString": "contract FeeTo"
                                        }
                                      ],
                                      "id": 213,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3174:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 215,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3174:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 210,
                                        "name": "pair",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 156,
                                        "src": "3158:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 209,
                                      "name": "IUniswapV2Pair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 388,
                                      "src": "3143:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                        "typeString": "type(contract IUniswapV2Pair)"
                                      }
                                    },
                                    "id": 211,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3143:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                      "typeString": "contract IUniswapV2Pair"
                                    }
                                  },
                                  "id": 212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "3143:30:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3143:45:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3135:53:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 218,
                            "nodeType": "ExpressionStatement",
                            "src": "3135:53:0"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 219,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 159,
                                "src": "3206:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3214:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3206:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 240,
                            "nodeType": "IfStatement",
                            "src": "3202:341:0",
                            "trueBody": {
                              "id": 239,
                              "nodeType": "Block",
                              "src": "3217:326:0",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 227,
                                            "name": "pair",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 156,
                                            "src": "3466:4:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 228,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 159,
                                            "src": "3472:5:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 224,
                                                "name": "pair",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 156,
                                                "src": "3451:4:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 223,
                                              "name": "IUniswapV2Pair",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 388,
                                              "src": "3436:14:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                                "typeString": "type(contract IUniswapV2Pair)"
                                              }
                                            },
                                            "id": 225,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3436:20:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                              "typeString": "contract IUniswapV2Pair"
                                            }
                                          },
                                          "id": 226,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "transfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 378,
                                          "src": "3436:29:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (address,uint256) external returns (bool)"
                                          }
                                        },
                                        "id": 229,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3436:42:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 222,
                                      "name": "assert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3826,
                                      "src": "3429:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3429:50:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 231,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3429:50:0"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 236,
                                        "name": "pair",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 156,
                                        "src": "3523:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 233,
                                            "name": "pair",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 156,
                                            "src": "3512:4:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 232,
                                          "name": "IUniswapV2Pair",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 388,
                                          "src": "3497:14:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                            "typeString": "type(contract IUniswapV2Pair)"
                                          }
                                        },
                                        "id": 234,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3497:20:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                          "typeString": "contract IUniswapV2Pair"
                                        }
                                      },
                                      "id": 235,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "burn",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 387,
                                      "src": "3497:25:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                        "typeString": "function (address) external returns (uint256,uint256)"
                                      }
                                    },
                                    "id": 237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3497:31:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "id": 238,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3497:31:0"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 241,
                                "name": "token0AllowState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 168,
                                "src": "3663:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                  "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                }
                              },
                              "id": 242,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "allowed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7,
                              "src": "3663:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 251,
                            "nodeType": "IfStatement",
                            "src": "3659:130:0",
                            "trueBody": {
                              "id": 250,
                              "nodeType": "Block",
                              "src": "3689:100:0",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 243,
                                        "name": "pairAllowState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 162,
                                        "src": "3707:14:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                                          "typeString": "struct FeeTo.PairAllowState storage pointer"
                                        }
                                      },
                                      "id": 245,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "token0DisallowCount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 16,
                                      "src": "3707:34:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 246,
                                        "name": "token0AllowState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 168,
                                        "src": "3744:16:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                          "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                        }
                                      },
                                      "id": 247,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "disallowCount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9,
                                      "src": "3744:30:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "3707:67:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 249,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3707:67:0"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 252,
                                "name": "token1AllowState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 178,
                                "src": "3908:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                  "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                }
                              },
                              "id": 253,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "allowed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7,
                              "src": "3908:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 262,
                            "nodeType": "IfStatement",
                            "src": "3904:130:0",
                            "trueBody": {
                              "id": 261,
                              "nodeType": "Block",
                              "src": "3934:100:0",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 254,
                                        "name": "pairAllowState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 162,
                                        "src": "3952:14:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                                          "typeString": "struct FeeTo.PairAllowState storage pointer"
                                        }
                                      },
                                      "id": 256,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "token1DisallowCount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 18,
                                      "src": "3952:34:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 257,
                                        "name": "token1AllowState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 178,
                                        "src": "3989:16:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                          "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                        }
                                      },
                                      "id": 258,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "disallowCount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9,
                                      "src": "3989:30:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "3952:67:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 260,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3952:67:0"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 266,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "renounce",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 157,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 156,
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "scope": 266,
                      "src": "2173:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 155,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2173:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2172:14:0"
                },
                "returnParameters": {
                  "id": 160,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 159,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 266,
                      "src": "2203:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 158,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2203:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2202:12:0"
                },
                "scope": 352,
                "src": "2155:1895:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 350,
                  "nodeType": "Block",
                  "src": "4113:1269:0",
                  "statements": [
                    {
                      "assignments": [
                        274
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 274,
                          "name": "pairAllowState",
                          "nodeType": "VariableDeclaration",
                          "scope": 350,
                          "src": "4123:37:0",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                            "typeString": "struct FeeTo.PairAllowState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 273,
                            "name": "PairAllowState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 19,
                            "src": "4123:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                              "typeString": "struct FeeTo.PairAllowState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 278,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 275,
                          "name": "pairAllowStates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "4163:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PairAllowState_$19_storage_$",
                            "typeString": "mapping(address => struct FeeTo.PairAllowState storage ref)"
                          }
                        },
                        "id": 277,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 276,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 268,
                          "src": "4179:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4163:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PairAllowState_$19_storage",
                          "typeString": "struct FeeTo.PairAllowState storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4123:61:0"
                    },
                    {
                      "assignments": [
                        280
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 280,
                          "name": "token0AllowState",
                          "nodeType": "VariableDeclaration",
                          "scope": 350,
                          "src": "4194:40:0",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                            "typeString": "struct FeeTo.TokenAllowState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 279,
                            "name": "TokenAllowState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 10,
                            "src": "4194:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                              "typeString": "struct FeeTo.TokenAllowState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 288,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 281,
                          "name": "tokenAllowStates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14,
                          "src": "4237:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TokenAllowState_$10_storage_$",
                            "typeString": "mapping(address => struct FeeTo.TokenAllowState storage ref)"
                          }
                        },
                        "id": 287,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 283,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 268,
                                  "src": "4269:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 282,
                                "name": "IUniswapV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 388,
                                "src": "4254:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                  "typeString": "type(contract IUniswapV2Pair)"
                                }
                              },
                              "id": 284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4254:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                "typeString": "contract IUniswapV2Pair"
                              }
                            },
                            "id": 285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 357,
                            "src": "4254:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4254:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4237:47:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage",
                          "typeString": "struct FeeTo.TokenAllowState storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4194:90:0"
                    },
                    {
                      "assignments": [
                        290
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 290,
                          "name": "token1AllowState",
                          "nodeType": "VariableDeclaration",
                          "scope": 350,
                          "src": "4294:40:0",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                            "typeString": "struct FeeTo.TokenAllowState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 289,
                            "name": "TokenAllowState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 10,
                            "src": "4294:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                              "typeString": "struct FeeTo.TokenAllowState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 298,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 291,
                          "name": "tokenAllowStates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14,
                          "src": "4337:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TokenAllowState_$10_storage_$",
                            "typeString": "mapping(address => struct FeeTo.TokenAllowState storage ref)"
                          }
                        },
                        "id": 297,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 293,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 268,
                                  "src": "4369:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 292,
                                "name": "IUniswapV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 388,
                                "src": "4354:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                  "typeString": "type(contract IUniswapV2Pair)"
                                }
                              },
                              "id": 294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4354:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                "typeString": "contract IUniswapV2Pair"
                              }
                            },
                            "id": 295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 362,
                            "src": "4354:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4354:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4337:47:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_TokenAllowState_$10_storage",
                          "typeString": "struct FeeTo.TokenAllowState storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4294:90:0"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 299,
                                  "name": "token0AllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 280,
                                  "src": "4782:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                    "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                  }
                                },
                                "id": 300,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7,
                                "src": "4782:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 301,
                                  "name": "token1AllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 290,
                                  "src": "4822:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                    "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                  }
                                },
                                "id": 302,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7,
                                "src": "4822:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4782:64:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 304,
                                  "name": "token0AllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 280,
                                  "src": "4862:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                    "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                  }
                                },
                                "id": 305,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "disallowCount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9,
                                "src": "4862:30:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 306,
                                  "name": "pairAllowState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 274,
                                  "src": "4896:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                                    "typeString": "struct FeeTo.PairAllowState storage pointer"
                                  }
                                },
                                "id": 307,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "token0DisallowCount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16,
                                "src": "4896:34:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "4862:68:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "4782:148:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 310,
                                "name": "token1AllowState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 290,
                                "src": "4946:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAllowState_$10_storage_ptr",
                                  "typeString": "struct FeeTo.TokenAllowState storage pointer"
                                }
                              },
                              "id": 311,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "disallowCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9,
                              "src": "4946:30:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 312,
                                "name": "pairAllowState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4980:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PairAllowState_$19_storage_ptr",
                                  "typeString": "struct FeeTo.PairAllowState storage pointer"
                                }
                              },
                              "id": 313,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token1DisallowCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18,
                              "src": "4980:34:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "4946:68:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4782:232:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 316,
                            "name": "feeRecipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5,
                            "src": "5030:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5054:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5046:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5046:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "5030:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4782:274:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 349,
                      "nodeType": "IfStatement",
                      "src": "4765:611:0",
                      "trueBody": {
                        "id": 348,
                        "nodeType": "Block",
                        "src": "5067:309:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 322,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 271,
                                "src": "5081:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 328,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3851,
                                        "src": "5128:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_FeeTo_$352",
                                          "typeString": "contract FeeTo"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_FeeTo_$352",
                                          "typeString": "contract FeeTo"
                                        }
                                      ],
                                      "id": 327,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5120:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 329,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5120:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 324,
                                        "name": "pair",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 268,
                                        "src": "5104:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 323,
                                      "name": "IUniswapV2Pair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 388,
                                      "src": "5089:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                        "typeString": "type(contract IUniswapV2Pair)"
                                      }
                                    },
                                    "id": 325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5089:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                      "typeString": "contract IUniswapV2Pair"
                                    }
                                  },
                                  "id": 326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 369,
                                  "src": "5089:30:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5089:45:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5081:53:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 332,
                            "nodeType": "ExpressionStatement",
                            "src": "5081:53:0"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 333,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 271,
                                "src": "5152:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5160:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5152:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 347,
                            "nodeType": "IfStatement",
                            "src": "5148:218:0",
                            "trueBody": {
                              "id": 346,
                              "nodeType": "Block",
                              "src": "5163:203:0",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 341,
                                            "name": "feeRecipient",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5,
                                            "src": "5330:12:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 342,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 271,
                                            "src": "5344:5:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 338,
                                                "name": "pair",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 268,
                                                "src": "5315:4:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 337,
                                              "name": "IUniswapV2Pair",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 388,
                                              "src": "5300:14:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$388_$",
                                                "typeString": "type(contract IUniswapV2Pair)"
                                              }
                                            },
                                            "id": 339,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5300:20:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IUniswapV2Pair_$388",
                                              "typeString": "contract IUniswapV2Pair"
                                            }
                                          },
                                          "id": 340,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "transfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 378,
                                          "src": "5300:29:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (address,uint256) external returns (bool)"
                                          }
                                        },
                                        "id": 343,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5300:50:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 336,
                                      "name": "assert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3826,
                                      "src": "5293:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5293:58:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 345,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5293:58:0"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 351,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "claim",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 269,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 268,
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "scope": 351,
                      "src": "4071:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 267,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4071:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4070:14:0"
                },
                "returnParameters": {
                  "id": 272,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 271,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 351,
                      "src": "4101:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 270,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4101:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4100:12:0"
                },
                "scope": 352,
                "src": "4056:1326:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              }
            ],
            "scope": 389,
            "src": "244:5140:0"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 388,
            "linearizedBaseContracts": [
              388
            ],
            "name": "IUniswapV2Pair",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "id": 357,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token0",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 353,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5432:2:0"
                },
                "returnParameters": {
                  "id": 356,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 355,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 357,
                      "src": "5458:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 354,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5458:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5457:9:0"
                },
                "scope": 388,
                "src": "5417:50:0",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 362,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token1",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 358,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5487:2:0"
                },
                "returnParameters": {
                  "id": 361,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 360,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 362,
                      "src": "5513:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 359,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5513:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5512:9:0"
                },
                "scope": 388,
                "src": "5472:50:0",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 369,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 365,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 364,
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 369,
                      "src": "5546:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 363,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5546:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5545:15:0"
                },
                "returnParameters": {
                  "id": 368,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 367,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 369,
                      "src": "5584:4:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 366,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5584:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5583:6:0"
                },
                "scope": 388,
                "src": "5527:63:0",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 378,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 374,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 371,
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 378,
                      "src": "5613:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 370,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5613:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 373,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 378,
                      "src": "5625:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 372,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5625:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5612:24:0"
                },
                "returnParameters": {
                  "id": 377,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 376,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 378,
                      "src": "5655:4:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 375,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5655:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5654:6:0"
                },
                "scope": 388,
                "src": "5595:66:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 387,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 381,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 380,
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 387,
                      "src": "5680:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 379,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5680:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5679:12:0"
                },
                "returnParameters": {
                  "id": 386,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 383,
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "scope": 387,
                      "src": "5710:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 382,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5710:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 385,
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "scope": 387,
                      "src": "5724:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 384,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5724:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5709:28:0"
                },
                "scope": 388,
                "src": "5666:72:0",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              }
            ],
            "scope": 389,
            "src": "5386:354:0"
          }
        ],
        "src": "0:5740:0"
      }
    },
    "contracts/FeeToSetter.sol": {
      "id": 1,
      "AST": {
        "absolutePath": "contracts/FeeToSetter.sol",
        "exportedSymbols": {
          "FeeToSetter": [
            516
          ],
          "IUniswapV2Factory": [
            527
          ]
        },
        "id": 528,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 390,
            "literals": [
              "solidity",
              "^",
              "0.5",
              ".16"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:1"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 516,
            "linearizedBaseContracts": [
              516
            ],
            "name": "FeeToSetter",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "id": 392,
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "scope": 516,
                "src": "191:22:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 391,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "191:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 394,
                "name": "vestingEnd",
                "nodeType": "VariableDeclaration",
                "scope": 516,
                "src": "219:22:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 393,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "219:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 396,
                "name": "feeTo",
                "nodeType": "VariableDeclaration",
                "scope": 516,
                "src": "247:20:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 395,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "247:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 398,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 516,
                "src": "274:20:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 397,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "274:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 433,
                  "nodeType": "Block",
                  "src": "388:228:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 410,
                              "name": "vestingEnd_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 402,
                              "src": "406:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 411,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "420:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "420:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "406:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f5365747465723a3a636f6e7374727563746f723a2076657374696e67206d75737420656e64206166746572206465706c6f796d656e74",
                            "id": 414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "437:61:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fdf0f7b9f310dd6831811f6ed102504e8689d888b3abcbbe644d0f572d3aa063",
                              "typeString": "literal_string \"FeeToSetter::constructor: vesting must end after deployment\""
                            },
                            "value": "FeeToSetter::constructor: vesting must end after deployment"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_fdf0f7b9f310dd6831811f6ed102504e8689d888b3abcbbe644d0f572d3aa063",
                              "typeString": "literal_string \"FeeToSetter::constructor: vesting must end after deployment\""
                            }
                          ],
                          "id": 409,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "398:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "398:101:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 416,
                      "nodeType": "ExpressionStatement",
                      "src": "398:101:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 417,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 392,
                          "src": "509:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 418,
                          "name": "factory_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 400,
                          "src": "519:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "509:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 420,
                      "nodeType": "ExpressionStatement",
                      "src": "509:18:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 421,
                          "name": "vestingEnd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 394,
                          "src": "537:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 422,
                          "name": "vestingEnd_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 402,
                          "src": "550:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "537:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 424,
                      "nodeType": "ExpressionStatement",
                      "src": "537:24:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 425,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 398,
                          "src": "571:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 426,
                          "name": "owner_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 404,
                          "src": "579:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "571:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 428,
                      "nodeType": "ExpressionStatement",
                      "src": "571:14:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 429,
                          "name": "feeTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 396,
                          "src": "595:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 430,
                          "name": "feeTo_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "603:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "595:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 432,
                      "nodeType": "ExpressionStatement",
                      "src": "595:14:1"
                    }
                  ]
                },
                "documentation": null,
                "id": 434,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 407,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 400,
                      "name": "factory_",
                      "nodeType": "VariableDeclaration",
                      "scope": 434,
                      "src": "313:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 399,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "313:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 402,
                      "name": "vestingEnd_",
                      "nodeType": "VariableDeclaration",
                      "scope": 434,
                      "src": "331:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 401,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "331:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 404,
                      "name": "owner_",
                      "nodeType": "VariableDeclaration",
                      "scope": 434,
                      "src": "349:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 403,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "349:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 406,
                      "name": "feeTo_",
                      "nodeType": "VariableDeclaration",
                      "scope": 434,
                      "src": "365:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 405,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "365:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "312:68:1"
                },
                "returnParameters": {
                  "id": 408,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "388:0:1"
                },
                "scope": 516,
                "src": "301:315:1",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 451,
                  "nodeType": "Block",
                  "src": "712:107:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 440,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "730:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "730:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 442,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 398,
                              "src": "744:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "730:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f5365747465723a3a7365744f776e65723a206e6f7420616c6c6f776564",
                            "id": 444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "751:36:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e551fe4035a057c6fc549b98884c58c7c9c64f5abd2b2e2ef64692a4e8af7583",
                              "typeString": "literal_string \"FeeToSetter::setOwner: not allowed\""
                            },
                            "value": "FeeToSetter::setOwner: not allowed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e551fe4035a057c6fc549b98884c58c7c9c64f5abd2b2e2ef64692a4e8af7583",
                              "typeString": "literal_string \"FeeToSetter::setOwner: not allowed\""
                            }
                          ],
                          "id": 439,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "722:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "722:66:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 446,
                      "nodeType": "ExpressionStatement",
                      "src": "722:66:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 447,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 398,
                          "src": "798:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 448,
                          "name": "owner_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 436,
                          "src": "806:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "798:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 450,
                      "nodeType": "ExpressionStatement",
                      "src": "798:14:1"
                    }
                  ]
                },
                "documentation": null,
                "id": 452,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setOwner",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 437,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 436,
                      "name": "owner_",
                      "nodeType": "VariableDeclaration",
                      "scope": 452,
                      "src": "689:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 435,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "689:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "688:16:1"
                },
                "returnParameters": {
                  "id": 438,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "712:0:1"
                },
                "scope": 516,
                "src": "671:148:1",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 480,
                  "nodeType": "Block",
                  "src": "934:247:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 458,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "952:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "952:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 460,
                              "name": "vestingEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 394,
                              "src": "971:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "952:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f5365747465723a3a736574466565546f5365747465723a206e6f742074696d6520796574",
                            "id": 462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "983:43:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4910d84aaa25e9c0a011002e287dbe144c3d39000fddc04ab7f72702c55c90b5",
                              "typeString": "literal_string \"FeeToSetter::setFeeToSetter: not time yet\""
                            },
                            "value": "FeeToSetter::setFeeToSetter: not time yet"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4910d84aaa25e9c0a011002e287dbe144c3d39000fddc04ab7f72702c55c90b5",
                              "typeString": "literal_string \"FeeToSetter::setFeeToSetter: not time yet\""
                            }
                          ],
                          "id": 457,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "944:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "944:83:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 464,
                      "nodeType": "ExpressionStatement",
                      "src": "944:83:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 466,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "1045:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1045:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 468,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 398,
                              "src": "1059:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1045:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f5365747465723a3a736574466565546f5365747465723a206e6f7420616c6c6f776564",
                            "id": 470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1066:42:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6c3dd794ea6d620763ca35d7419278f8b1943da52338944e50531161ae13c7dc",
                              "typeString": "literal_string \"FeeToSetter::setFeeToSetter: not allowed\""
                            },
                            "value": "FeeToSetter::setFeeToSetter: not allowed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_6c3dd794ea6d620763ca35d7419278f8b1943da52338944e50531161ae13c7dc",
                              "typeString": "literal_string \"FeeToSetter::setFeeToSetter: not allowed\""
                            }
                          ],
                          "id": 465,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1037:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1037:72:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 472,
                      "nodeType": "ExpressionStatement",
                      "src": "1037:72:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 477,
                            "name": "feeToSetter_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 454,
                            "src": "1161:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 474,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 392,
                                "src": "1137:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 473,
                              "name": "IUniswapV2Factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 527,
                              "src": "1119:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$527_$",
                                "typeString": "type(contract IUniswapV2Factory)"
                              }
                            },
                            "id": 475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1119:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Factory_$527",
                              "typeString": "contract IUniswapV2Factory"
                            }
                          },
                          "id": 476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "setFeeToSetter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 521,
                          "src": "1119:41:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address) external"
                          }
                        },
                        "id": 478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1119:55:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 479,
                      "nodeType": "ExpressionStatement",
                      "src": "1119:55:1"
                    }
                  ]
                },
                "documentation": null,
                "id": 481,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeToSetter",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 455,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 454,
                      "name": "feeToSetter_",
                      "nodeType": "VariableDeclaration",
                      "scope": 481,
                      "src": "905:20:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 453,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "905:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "904:22:1"
                },
                "returnParameters": {
                  "id": 456,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "934:0:1"
                },
                "scope": 516,
                "src": "881:300:1",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 514,
                  "nodeType": "Block",
                  "src": "1277:244:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 490,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 487,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "1295:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1295:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 489,
                              "name": "vestingEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 394,
                              "src": "1314:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1295:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f5365747465723a3a746f67676c65466565733a206e6f742074696d6520796574",
                            "id": 491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1326:39:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4629354d289e140d82720501f6a220f2d7436e24f3add5a3f74cf16f9142e9f6",
                              "typeString": "literal_string \"FeeToSetter::toggleFees: not time yet\""
                            },
                            "value": "FeeToSetter::toggleFees: not time yet"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4629354d289e140d82720501f6a220f2d7436e24f3add5a3f74cf16f9142e9f6",
                              "typeString": "literal_string \"FeeToSetter::toggleFees: not time yet\""
                            }
                          ],
                          "id": 486,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1287:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1287:79:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 493,
                      "nodeType": "ExpressionStatement",
                      "src": "1287:79:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 495,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "1384:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1384:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 497,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 398,
                              "src": "1398:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1384:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466565546f5365747465723a3a746f67676c65466565733a206e6f7420616c6c6f776564",
                            "id": 499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1405:38:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_69f0fe33328fcf87fcc722e32edf28546f10d20fdc8675aaf57fadd4b8514832",
                              "typeString": "literal_string \"FeeToSetter::toggleFees: not allowed\""
                            },
                            "value": "FeeToSetter::toggleFees: not allowed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_69f0fe33328fcf87fcc722e32edf28546f10d20fdc8675aaf57fadd4b8514832",
                              "typeString": "literal_string \"FeeToSetter::toggleFees: not allowed\""
                            }
                          ],
                          "id": 494,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1376:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1376:68:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 501,
                      "nodeType": "ExpressionStatement",
                      "src": "1376:68:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "id": 506,
                              "name": "on",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 483,
                              "src": "1490:2:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1511:1:1",
                                  "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": 508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1503:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1503:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "1490:23:1",
                            "trueExpression": {
                              "argumentTypes": null,
                              "id": 507,
                              "name": "feeTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 396,
                              "src": "1495:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 503,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 392,
                                "src": "1472:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 502,
                              "name": "IUniswapV2Factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 527,
                              "src": "1454:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$527_$",
                                "typeString": "type(contract IUniswapV2Factory)"
                              }
                            },
                            "id": 504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1454:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Factory_$527",
                              "typeString": "contract IUniswapV2Factory"
                            }
                          },
                          "id": 505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "setFeeTo",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 526,
                          "src": "1454:35:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address) external"
                          }
                        },
                        "id": 512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1454:60:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 513,
                      "nodeType": "ExpressionStatement",
                      "src": "1454:60:1"
                    }
                  ]
                },
                "documentation": null,
                "id": 515,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "toggleFees",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 484,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 483,
                      "name": "on",
                      "nodeType": "VariableDeclaration",
                      "scope": 515,
                      "src": "1261:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 482,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1261:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1260:9:1"
                },
                "returnParameters": {
                  "id": 485,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1277:0:1"
                },
                "scope": 516,
                "src": "1241:280:1",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              }
            ],
            "scope": 528,
            "src": "146:1377:1"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 527,
            "linearizedBaseContracts": [
              527
            ],
            "name": "IUniswapV2Factory",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "id": 521,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeToSetter",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 519,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 518,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 521,
                      "src": "1583:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 517,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1583:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1582:9:1"
                },
                "returnParameters": {
                  "id": 520,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1600:0:1"
                },
                "scope": 527,
                "src": "1559:42:1",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 526,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 524,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 523,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 526,
                      "src": "1624:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 522,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1624:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1623:9:1"
                },
                "returnParameters": {
                  "id": 525,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1641:0:1"
                },
                "scope": 527,
                "src": "1606:36:1",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              }
            ],
            "scope": 528,
            "src": "1525:119:1"
          }
        ],
        "src": "0:1645:1"
      }
    },
    "contracts/GovernorAlpha.sol": {
      "id": 2,
      "AST": {
        "absolutePath": "contracts/GovernorAlpha.sol",
        "exportedSymbols": {
          "GovernorAlpha": [
            1587
          ],
          "TimelockInterface": [
            1651
          ],
          "UniInterface": [
            1661
          ]
        },
        "id": 1662,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 529,
            "literals": [
              "solidity",
              "^",
              "0.5",
              ".16"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:2"
          },
          {
            "id": 530,
            "literals": [
              "experimental",
              "ABIEncoderV2"
            ],
            "nodeType": "PragmaDirective",
            "src": "25:33:2"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1587,
            "linearizedBaseContracts": [
              1587
            ],
            "name": "GovernorAlpha",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": true,
                "id": 533,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "131:54:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 531,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "131:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "556e697377617020476f7665726e6f7220416c706861",
                  "id": 532,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "161:24:2",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_a5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447",
                    "typeString": "literal_string \"Uniswap Governor Alpha\""
                  },
                  "value": "Uniswap Governor Alpha"
                },
                "visibility": "public"
              },
              {
                "body": {
                  "id": 540,
                  "nodeType": "Block",
                  "src": "374:25:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "34305f3030305f303030653138",
                        "id": 538,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "383:13:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_40000000000000000000000000_by_1",
                          "typeString": "int_const 40000000000000000000000000"
                        },
                        "value": "40_000_000e18"
                      },
                      "functionReturnParameters": 537,
                      "id": 539,
                      "nodeType": "Return",
                      "src": "376:20:2"
                    }
                  ]
                },
                "documentation": "@notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed",
                "id": 541,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quorumVotes",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 534,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "344:2:2"
                },
                "returnParameters": {
                  "id": 537,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 536,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 541,
                      "src": "368:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 535,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "368:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "367:6:2"
                },
                "scope": 1587,
                "src": "324:75:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 548,
                  "nodeType": "Block",
                  "src": "561:25:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "31305f3030305f303030653138",
                        "id": 546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "570:13:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10000000000000000000000000_by_1",
                          "typeString": "int_const 10000000000000000000000000"
                        },
                        "value": "10_000_000e18"
                      },
                      "functionReturnParameters": 545,
                      "id": 547,
                      "nodeType": "Return",
                      "src": "563:20:2"
                    }
                  ]
                },
                "documentation": "@notice The number of votes required in order for a voter to become a proposer",
                "id": 549,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "proposalThreshold",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 542,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "531:2:2"
                },
                "returnParameters": {
                  "id": 545,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 544,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 549,
                      "src": "555:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 543,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "555:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "554:6:2"
                },
                "scope": 1587,
                "src": "505:81:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 556,
                  "nodeType": "Block",
                  "src": "746:14:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "755:2:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "functionReturnParameters": 553,
                      "id": 555,
                      "nodeType": "Return",
                      "src": "748:9:2"
                    }
                  ]
                },
                "documentation": "@notice The maximum number of actions that can be included in a proposal",
                "id": 557,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "proposalMaxOperations",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 550,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "716:2:2"
                },
                "returnParameters": {
                  "id": 553,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 552,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 557,
                      "src": "740:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 551,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "740:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "739:6:2"
                },
                "scope": 1587,
                "src": "686:74:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 564,
                  "nodeType": "Block",
                  "src": "914:13:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 562,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "923:1:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "functionReturnParameters": 561,
                      "id": 563,
                      "nodeType": "Return",
                      "src": "916:8:2"
                    }
                  ]
                },
                "documentation": "@notice The delay before voting on a proposal may take place, once proposed",
                "id": 565,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "votingDelay",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 558,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "884:2:2"
                },
                "returnParameters": {
                  "id": 561,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 560,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 565,
                      "src": "908:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 559,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "908:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "907:6:2"
                },
                "scope": 1587,
                "src": "864:63:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 572,
                  "nodeType": "Block",
                  "src": "1059:18:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "34305f333230",
                        "id": 570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1068:6:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_40320_by_1",
                          "typeString": "int_const 40320"
                        },
                        "value": "40_320"
                      },
                      "functionReturnParameters": 569,
                      "id": 571,
                      "nodeType": "Return",
                      "src": "1061:13:2"
                    }
                  ]
                },
                "documentation": "@notice The duration of voting on a proposal, in blocks",
                "id": 573,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "votingPeriod",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 566,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1029:2:2"
                },
                "returnParameters": {
                  "id": 569,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 568,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 573,
                      "src": "1053:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 567,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1053:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1052:6:2"
                },
                "scope": 1587,
                "src": "1008:69:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 575,
                "name": "timelock",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "1187:33:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                  "typeString": "contract TimelockInterface"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 574,
                  "name": "TimelockInterface",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1651,
                  "src": "1187:17:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                    "typeString": "contract TimelockInterface"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 577,
                "name": "uni",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "1287:23:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_UniInterface_$1661",
                  "typeString": "contract UniInterface"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 576,
                  "name": "UniInterface",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1661,
                  "src": "1287:12:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UniInterface_$1661",
                    "typeString": "contract UniInterface"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 579,
                "name": "proposalCount",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "1363:25:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 578,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1363:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "canonicalName": "GovernorAlpha.Proposal",
                "id": 614,
                "members": [
                  {
                    "constant": false,
                    "id": 581,
                    "name": "id",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "1477:7:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 580,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1477:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 583,
                    "name": "proposer",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "1539:16:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 582,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1539:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 585,
                    "name": "eta",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "1678:8:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 584,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1678:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 588,
                    "name": "targets",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "1775:17:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 586,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1775:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 587,
                      "length": null,
                      "nodeType": "ArrayTypeName",
                      "src": "1775:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                        "typeString": "address[]"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 591,
                    "name": "values",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "1904:13:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 589,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1904:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 590,
                      "length": null,
                      "nodeType": "ArrayTypeName",
                      "src": "1904:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 594,
                    "name": "signatures",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2001:19:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 592,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2001:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "id": 593,
                      "length": null,
                      "nodeType": "ArrayTypeName",
                      "src": "2001:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                        "typeString": "string[]"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 597,
                    "name": "calldatas",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2106:17:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    },
                    "typeName": {
                      "baseType": {
                        "id": 595,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2106:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "id": 596,
                      "length": null,
                      "nodeType": "ArrayTypeName",
                      "src": "2106:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                        "typeString": "bytes[]"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 599,
                    "name": "startBlock",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2242:15:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 598,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2242:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 601,
                    "name": "endBlock",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2359:13:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 600,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2359:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 603,
                    "name": "forVotes",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2453:13:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 602,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2453:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 605,
                    "name": "againstVotes",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2552:17:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 604,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2552:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 607,
                    "name": "canceled",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2652:13:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 606,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2652:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 609,
                    "name": "executed",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2748:13:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 608,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2748:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 613,
                    "name": "receipts",
                    "nodeType": "VariableDeclaration",
                    "scope": 614,
                    "src": "2841:37:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$621_storage_$",
                      "typeString": "mapping(address => struct GovernorAlpha.Receipt)"
                    },
                    "typeName": {
                      "id": 612,
                      "keyType": {
                        "id": 610,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2850:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2841:28:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$621_storage_$",
                        "typeString": "mapping(address => struct GovernorAlpha.Receipt)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 611,
                        "name": "Receipt",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 621,
                        "src": "2861:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                          "typeString": "struct GovernorAlpha.Receipt"
                        }
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Proposal",
                "nodeType": "StructDefinition",
                "scope": 1587,
                "src": "1395:1490:2",
                "visibility": "public"
              },
              {
                "canonicalName": "GovernorAlpha.Receipt",
                "id": 621,
                "members": [
                  {
                    "constant": false,
                    "id": 616,
                    "name": "hasVoted",
                    "nodeType": "VariableDeclaration",
                    "scope": 621,
                    "src": "3022:13:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 615,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "3022:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 618,
                    "name": "support",
                    "nodeType": "VariableDeclaration",
                    "scope": 621,
                    "src": "3113:12:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 617,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "3113:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 620,
                    "name": "votes",
                    "nodeType": "VariableDeclaration",
                    "scope": 621,
                    "src": "3207:12:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "typeName": {
                      "id": 619,
                      "name": "uint96",
                      "nodeType": "ElementaryTypeName",
                      "src": "3207:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Receipt",
                "nodeType": "StructDefinition",
                "scope": 1587,
                "src": "2941:285:2",
                "visibility": "public"
              },
              {
                "canonicalName": "GovernorAlpha.ProposalState",
                "id": 630,
                "members": [
                  {
                    "id": 622,
                    "name": "Pending",
                    "nodeType": "EnumValue",
                    "src": "3319:7:2"
                  },
                  {
                    "id": 623,
                    "name": "Active",
                    "nodeType": "EnumValue",
                    "src": "3336:6:2"
                  },
                  {
                    "id": 624,
                    "name": "Canceled",
                    "nodeType": "EnumValue",
                    "src": "3352:8:2"
                  },
                  {
                    "id": 625,
                    "name": "Defeated",
                    "nodeType": "EnumValue",
                    "src": "3370:8:2"
                  },
                  {
                    "id": 626,
                    "name": "Succeeded",
                    "nodeType": "EnumValue",
                    "src": "3388:9:2"
                  },
                  {
                    "id": 627,
                    "name": "Queued",
                    "nodeType": "EnumValue",
                    "src": "3407:6:2"
                  },
                  {
                    "id": 628,
                    "name": "Expired",
                    "nodeType": "EnumValue",
                    "src": "3423:7:2"
                  },
                  {
                    "id": 629,
                    "name": "Executed",
                    "nodeType": "EnumValue",
                    "src": "3440:8:2"
                  }
                ],
                "name": "ProposalState",
                "nodeType": "EnumDefinition",
                "src": "3290:164:2"
              },
              {
                "constant": false,
                "id": 634,
                "name": "proposals",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "3527:43:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                  "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal)"
                },
                "typeName": {
                  "id": 633,
                  "keyType": {
                    "id": 631,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3536:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3527:26:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                    "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 632,
                    "name": "Proposal",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 614,
                    "src": "3544:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                      "typeString": "struct GovernorAlpha.Proposal"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 638,
                "name": "latestProposalIds",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "3631:50:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 637,
                  "keyType": {
                    "id": 635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3640:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3631:25:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 636,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3651:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 643,
                "name": "DOMAIN_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "3751:122:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 639,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3751:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                      "id": 641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3803:69:2",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                        "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                      },
                      "value": "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                        "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                      }
                    ],
                    "id": 640,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3831,
                    "src": "3793:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 642,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "3793:80:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 648,
                "name": "BALLOT_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "scope": 1587,
                "src": "3960:94:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 644,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3960:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20737570706f727429",
                      "id": 646,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4012:41:2",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                        "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                      },
                      "value": "Ballot(uint256 proposalId,bool support)"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                        "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                      }
                    ],
                    "id": 645,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3831,
                    "src": "4002:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 647,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "4002:52:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event emitted when a new proposal is created",
                "id": 672,
                "name": "ProposalCreated",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 671,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 650,
                      "indexed": false,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4147:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 649,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4147:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 652,
                      "indexed": false,
                      "name": "proposer",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4156:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 651,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4156:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 655,
                      "indexed": false,
                      "name": "targets",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4174:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4174:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 654,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4174:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 658,
                      "indexed": false,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4193:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 656,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4193:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 657,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4193:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 661,
                      "indexed": false,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4208:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                        "typeString": "string[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 659,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4208:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "id": 660,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4208:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                          "typeString": "string[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 664,
                      "indexed": false,
                      "name": "calldatas",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4229:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 662,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4229:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 663,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4229:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 666,
                      "indexed": false,
                      "name": "startBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4248:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 665,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4248:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 668,
                      "indexed": false,
                      "name": "endBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4265:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 667,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4265:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 670,
                      "indexed": false,
                      "name": "description",
                      "nodeType": "VariableDeclaration",
                      "scope": 672,
                      "src": "4280:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 669,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4280:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4146:153:2"
                },
                "src": "4125:175:2"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event emitted when a vote has been cast on a proposal",
                "id": 682,
                "name": "VoteCast",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 681,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 674,
                      "indexed": false,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 682,
                      "src": "4394:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 673,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4394:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 676,
                      "indexed": false,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 682,
                      "src": "4409:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 675,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4409:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 678,
                      "indexed": false,
                      "name": "support",
                      "nodeType": "VariableDeclaration",
                      "scope": 682,
                      "src": "4426:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 677,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4426:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 680,
                      "indexed": false,
                      "name": "votes",
                      "nodeType": "VariableDeclaration",
                      "scope": 682,
                      "src": "4440:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 679,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4440:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4393:58:2"
                },
                "src": "4379:73:2"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event emitted when a proposal has been canceled",
                "id": 686,
                "name": "ProposalCanceled",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 685,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 684,
                      "indexed": false,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 686,
                      "src": "4548:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 683,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4548:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4547:9:2"
                },
                "src": "4525:32:2"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event emitted when a proposal has been queued in the Timelock",
                "id": 692,
                "name": "ProposalQueued",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 691,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 688,
                      "indexed": false,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 692,
                      "src": "4665:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 687,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4665:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 690,
                      "indexed": false,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 692,
                      "src": "4674:8:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 689,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4674:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4664:19:2"
                },
                "src": "4644:40:2"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event emitted when a proposal has been executed in the Timelock",
                "id": 696,
                "name": "ProposalExecuted",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 695,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 694,
                      "indexed": false,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 696,
                      "src": "4796:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 693,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4796:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4795:9:2"
                },
                "src": "4773:32:2"
              },
              {
                "body": {
                  "id": 715,
                  "nodeType": "Block",
                  "src": "4863:90:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 703,
                          "name": "timelock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 575,
                          "src": "4873:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                            "typeString": "contract TimelockInterface"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 705,
                              "name": "timelock_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 698,
                              "src": "4902:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 704,
                            "name": "TimelockInterface",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1651,
                            "src": "4884:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TimelockInterface_$1651_$",
                              "typeString": "type(contract TimelockInterface)"
                            }
                          },
                          "id": 706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4884:28:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                            "typeString": "contract TimelockInterface"
                          }
                        },
                        "src": "4873:39:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                          "typeString": "contract TimelockInterface"
                        }
                      },
                      "id": 708,
                      "nodeType": "ExpressionStatement",
                      "src": "4873:39:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 709,
                          "name": "uni",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 577,
                          "src": "4922:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_UniInterface_$1661",
                            "typeString": "contract UniInterface"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 711,
                              "name": "uni_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 700,
                              "src": "4941:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 710,
                            "name": "UniInterface",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1661,
                            "src": "4928:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_UniInterface_$1661_$",
                              "typeString": "type(contract UniInterface)"
                            }
                          },
                          "id": 712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4928:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_UniInterface_$1661",
                            "typeString": "contract UniInterface"
                          }
                        },
                        "src": "4922:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniInterface_$1661",
                          "typeString": "contract UniInterface"
                        }
                      },
                      "id": 714,
                      "nodeType": "ExpressionStatement",
                      "src": "4922:24:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 716,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 701,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 698,
                      "name": "timelock_",
                      "nodeType": "VariableDeclaration",
                      "scope": 716,
                      "src": "4823:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 697,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4823:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 700,
                      "name": "uni_",
                      "nodeType": "VariableDeclaration",
                      "scope": 716,
                      "src": "4842:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 699,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4842:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4822:33:2"
                },
                "returnParameters": {
                  "id": 702,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4863:0:2"
                },
                "scope": 1587,
                "src": "4811:142:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 895,
                  "nodeType": "Block",
                  "src": "5127:1965:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 738,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3837,
                                    "src": "5163:3:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 739,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5163:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 741,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3827,
                                        "src": "5182:5:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 742,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "number",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5182:12:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 743,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5196:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "id": 740,
                                    "name": "sub256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1574,
                                    "src": "5175:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5175:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 736,
                                  "name": "uni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 577,
                                  "src": "5145:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UniInterface_$1661",
                                    "typeString": "contract UniInterface"
                                  }
                                },
                                "id": 737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPriorVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1660,
                                "src": "5145:17:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                                  "typeString": "function (address,uint256) view external returns (uint96)"
                                }
                              },
                              "id": 745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5145:54:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 746,
                                "name": "proposalThreshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 549,
                                "src": "5202:17:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5202:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5145:76:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657220766f7465732062656c6f772070726f706f73616c207468726573686f6c64",
                            "id": 749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5223:65:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bfd39a706899c667e0394e5691bba7fd459524eeb85474b380cee160c3526ad7",
                              "typeString": "literal_string \"GovernorAlpha::propose: proposer votes below proposal threshold\""
                            },
                            "value": "GovernorAlpha::propose: proposer votes below proposal threshold"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bfd39a706899c667e0394e5691bba7fd459524eeb85474b380cee160c3526ad7",
                              "typeString": "literal_string \"GovernorAlpha::propose: proposer votes below proposal threshold\""
                            }
                          ],
                          "id": 735,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "5137:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 750,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5137:152:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 751,
                      "nodeType": "ExpressionStatement",
                      "src": "5137:152:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 753,
                                    "name": "targets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 719,
                                    "src": "5307:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5307:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 755,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 722,
                                    "src": "5325:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5325:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5307:31:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 758,
                                    "name": "targets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 719,
                                    "src": "5342:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 759,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5342:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 760,
                                    "name": "signatures",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 725,
                                    "src": "5360:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                      "typeString": "string memory[] memory"
                                    }
                                  },
                                  "id": 761,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5360:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5342:35:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5307:70:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 764,
                                  "name": "targets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 719,
                                  "src": "5381:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5381:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 766,
                                  "name": "calldatas",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 728,
                                  "src": "5399:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                    "typeString": "bytes memory[] memory"
                                  }
                                },
                                "id": 767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5399:16:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5381:34:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "5307:108:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d61746368",
                            "id": 770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5417:70:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8f65dd3b1b279a725bb780739a9eb5d267c38175f941e38ce802e63e3e8b6fea",
                              "typeString": "literal_string \"GovernorAlpha::propose: proposal function information arity mismatch\""
                            },
                            "value": "GovernorAlpha::propose: proposal function information arity mismatch"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8f65dd3b1b279a725bb780739a9eb5d267c38175f941e38ce802e63e3e8b6fea",
                              "typeString": "literal_string \"GovernorAlpha::propose: proposal function information arity mismatch\""
                            }
                          ],
                          "id": 752,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "5299:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5299:189:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 772,
                      "nodeType": "ExpressionStatement",
                      "src": "5299:189:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 774,
                                "name": "targets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 719,
                                "src": "5506:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5506:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5524:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5506:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f7669646520616374696f6e73",
                            "id": 778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5527:46:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ad28c98e0c3f5f095d64a889b8cb7fef3f5dce1da50271bc4d958131808bd4c3",
                              "typeString": "literal_string \"GovernorAlpha::propose: must provide actions\""
                            },
                            "value": "GovernorAlpha::propose: must provide actions"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_ad28c98e0c3f5f095d64a889b8cb7fef3f5dce1da50271bc4d958131808bd4c3",
                              "typeString": "literal_string \"GovernorAlpha::propose: must provide actions\""
                            }
                          ],
                          "id": 773,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "5498:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5498:76:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 780,
                      "nodeType": "ExpressionStatement",
                      "src": "5498:76:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 782,
                                "name": "targets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 719,
                                "src": "5592:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5592:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 784,
                                "name": "proposalMaxOperations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 557,
                                "src": "5610:21:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5610:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5592:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7920616374696f6e73",
                            "id": 787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5635:42:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7be08c0beae18091615fa69523ea231e3fec34367b86b38f90cf56bf50e90496",
                              "typeString": "literal_string \"GovernorAlpha::propose: too many actions\""
                            },
                            "value": "GovernorAlpha::propose: too many actions"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7be08c0beae18091615fa69523ea231e3fec34367b86b38f90cf56bf50e90496",
                              "typeString": "literal_string \"GovernorAlpha::propose: too many actions\""
                            }
                          ],
                          "id": 781,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "5584:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5584:94:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 789,
                      "nodeType": "ExpressionStatement",
                      "src": "5584:94:2"
                    },
                    {
                      "assignments": [
                        791
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 791,
                          "name": "latestProposalId",
                          "nodeType": "VariableDeclaration",
                          "scope": 895,
                          "src": "5689:21:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 790,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5689:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 796,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 792,
                          "name": "latestProposalIds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 638,
                          "src": "5713:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 795,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 793,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "5731:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5731:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5713:29:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5689:53:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 797,
                          "name": "latestProposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 791,
                          "src": "5756:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5776:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5756:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 823,
                      "nodeType": "IfStatement",
                      "src": "5752:450:2",
                      "trueBody": {
                        "id": 822,
                        "nodeType": "Block",
                        "src": "5779:423:2",
                        "statements": [
                          {
                            "assignments": [
                              801
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 801,
                                "name": "proposersLatestProposalState",
                                "nodeType": "VariableDeclaration",
                                "scope": 822,
                                "src": "5791:42:2",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$630",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 800,
                                  "name": "ProposalState",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 630,
                                  "src": "5791:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$630",
                                    "typeString": "enum GovernorAlpha.ProposalState"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 805,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 803,
                                  "name": "latestProposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 791,
                                  "src": "5842:16:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 802,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1335,
                                "src": "5836:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$630_$",
                                  "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5836:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5791:68:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$630",
                                    "typeString": "enum GovernorAlpha.ProposalState"
                                  },
                                  "id": 810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 807,
                                    "name": "proposersLatestProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 801,
                                    "src": "5879:28:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$630",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 808,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 630,
                                      "src": "5911:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                        "typeString": "type(enum GovernorAlpha.ProposalState)"
                                      }
                                    },
                                    "id": 809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Active",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5911:20:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$630",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    }
                                  },
                                  "src": "5879:52:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c7265616479206163746976652070726f706f73616c",
                                  "id": 811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5933:90:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d87f670040507c478977f847e6bd1f7a027d18f70440fe56056d87e43baea226",
                                    "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\""
                                  },
                                  "value": "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_d87f670040507c478977f847e6bd1f7a027d18f70440fe56056d87e43baea226",
                                    "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\""
                                  }
                                ],
                                "id": 806,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3840,
                                  3841
                                ],
                                "referencedDeclaration": 3841,
                                "src": "5871:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5871:153:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 813,
                            "nodeType": "ExpressionStatement",
                            "src": "5871:153:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$630",
                                    "typeString": "enum GovernorAlpha.ProposalState"
                                  },
                                  "id": 818,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 815,
                                    "name": "proposersLatestProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 801,
                                    "src": "6044:28:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$630",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 816,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 630,
                                      "src": "6076:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                        "typeString": "type(enum GovernorAlpha.ProposalState)"
                                      }
                                    },
                                    "id": 817,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Pending",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6076:21:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$630",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    }
                                  },
                                  "src": "6044:53:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c72656164792070656e64696e672070726f706f73616c",
                                  "id": 819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6099:91:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6ba5b9d71ffd376990d8fe5d0e3e5e56e38371f2ae53f3613e7df4450ff470e6",
                                    "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\""
                                  },
                                  "value": "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_6ba5b9d71ffd376990d8fe5d0e3e5e56e38371f2ae53f3613e7df4450ff470e6",
                                    "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\""
                                  }
                                ],
                                "id": 814,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3840,
                                  3841
                                ],
                                "referencedDeclaration": 3841,
                                "src": "6036:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6036:155:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 821,
                            "nodeType": "ExpressionStatement",
                            "src": "6036:155:2"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        825
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 825,
                          "name": "startBlock",
                          "nodeType": "VariableDeclaration",
                          "scope": 895,
                          "src": "6212:15:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 824,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6212:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 832,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 827,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3827,
                              "src": "6237:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6237:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 829,
                              "name": "votingDelay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 565,
                              "src": "6251:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                "typeString": "function () pure returns (uint256)"
                              }
                            },
                            "id": 830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6251:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 826,
                          "name": "add256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1553,
                          "src": "6230:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6230:35:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6212:53:2"
                    },
                    {
                      "assignments": [
                        834
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 834,
                          "name": "endBlock",
                          "nodeType": "VariableDeclaration",
                          "scope": 895,
                          "src": "6275:13:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 833,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6275:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 840,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 836,
                            "name": "startBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 825,
                            "src": "6298:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 837,
                              "name": "votingPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 573,
                              "src": "6310:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                "typeString": "function () pure returns (uint256)"
                              }
                            },
                            "id": 838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6310:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 835,
                          "name": "add256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1553,
                          "src": "6291:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6291:34:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6275:50:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "++",
                        "prefix": false,
                        "src": "6336:15:2",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 841,
                          "name": "proposalCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 579,
                          "src": "6336:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 843,
                      "nodeType": "ExpressionStatement",
                      "src": "6336:15:2"
                    },
                    {
                      "assignments": [
                        845
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 845,
                          "name": "newProposal",
                          "nodeType": "VariableDeclaration",
                          "scope": 895,
                          "src": "6361:27:2",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_memory_ptr",
                            "typeString": "struct GovernorAlpha.Proposal"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 844,
                            "name": "Proposal",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 614,
                            "src": "6361:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 862,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 847,
                            "name": "proposalCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 579,
                            "src": "6418:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 848,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3837,
                              "src": "6455:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6455:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6484:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "id": 851,
                            "name": "targets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 719,
                            "src": "6508:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 852,
                            "name": "values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 722,
                            "src": "6537:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 853,
                            "name": "signatures",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 725,
                            "src": "6569:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string memory[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 854,
                            "name": "calldatas",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 728,
                            "src": "6604:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 855,
                            "name": "startBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 825,
                            "src": "6639:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 856,
                            "name": "endBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 834,
                            "src": "6673:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6705:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6734:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6759:5:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6788:5:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string memory[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 846,
                          "name": "Proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 614,
                          "src": "6391:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Proposal_$614_storage_ptr_$",
                            "typeString": "type(struct GovernorAlpha.Proposal storage pointer)"
                          }
                        },
                        "id": 861,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "id",
                          "proposer",
                          "eta",
                          "targets",
                          "values",
                          "signatures",
                          "calldatas",
                          "startBlock",
                          "endBlock",
                          "forVotes",
                          "againstVotes",
                          "canceled",
                          "executed"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "6391:413:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_memory",
                          "typeString": "struct GovernorAlpha.Proposal memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6361:443:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 863,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 634,
                            "src": "6815:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                              "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                            }
                          },
                          "id": 866,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 864,
                              "name": "newProposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 845,
                              "src": "6825:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_memory_ptr",
                                "typeString": "struct GovernorAlpha.Proposal memory"
                              }
                            },
                            "id": 865,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 581,
                            "src": "6825:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6815:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 867,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 845,
                          "src": "6843:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_memory_ptr",
                            "typeString": "struct GovernorAlpha.Proposal memory"
                          }
                        },
                        "src": "6815:39:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_storage",
                          "typeString": "struct GovernorAlpha.Proposal storage ref"
                        }
                      },
                      "id": 869,
                      "nodeType": "ExpressionStatement",
                      "src": "6815:39:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 870,
                            "name": "latestProposalIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 638,
                            "src": "6864:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 873,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 871,
                              "name": "newProposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 845,
                              "src": "6882:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_memory_ptr",
                                "typeString": "struct GovernorAlpha.Proposal memory"
                              }
                            },
                            "id": 872,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 583,
                            "src": "6882:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6864:39:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 874,
                            "name": "newProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 845,
                            "src": "6906:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_memory_ptr",
                              "typeString": "struct GovernorAlpha.Proposal memory"
                            }
                          },
                          "id": 875,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "id",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 581,
                          "src": "6906:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6864:56:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 877,
                      "nodeType": "ExpressionStatement",
                      "src": "6864:56:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 879,
                              "name": "newProposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 845,
                              "src": "6952:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_memory_ptr",
                                "typeString": "struct GovernorAlpha.Proposal memory"
                              }
                            },
                            "id": 880,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 581,
                            "src": "6952:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 881,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3837,
                              "src": "6968:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6968:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 883,
                            "name": "targets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 719,
                            "src": "6980:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 884,
                            "name": "values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 722,
                            "src": "6989:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 885,
                            "name": "signatures",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 725,
                            "src": "6997:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string memory[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 886,
                            "name": "calldatas",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 728,
                            "src": "7009:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 887,
                            "name": "startBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 825,
                            "src": "7020:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 888,
                            "name": "endBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 834,
                            "src": "7032:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 889,
                            "name": "description",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 730,
                            "src": "7042:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                              "typeString": "string memory[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 878,
                          "name": "ProposalCreated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "6936:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (uint256,address,address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,uint256,uint256,string memory)"
                          }
                        },
                        "id": 890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6936:118:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 891,
                      "nodeType": "EmitStatement",
                      "src": "6931:123:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 892,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 845,
                          "src": "7071:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_memory_ptr",
                            "typeString": "struct GovernorAlpha.Proposal memory"
                          }
                        },
                        "id": 893,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 581,
                        "src": "7071:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 734,
                      "id": 894,
                      "nodeType": "Return",
                      "src": "7064:21:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 896,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "propose",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 731,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 719,
                      "name": "targets",
                      "nodeType": "VariableDeclaration",
                      "scope": 896,
                      "src": "4976:24:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4976:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 718,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4976:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 722,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 896,
                      "src": "5002:20:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 720,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5002:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 721,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5002:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 725,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "scope": 896,
                      "src": "5024:26:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                        "typeString": "string[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 723,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5024:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "id": 724,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5024:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                          "typeString": "string[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 728,
                      "name": "calldatas",
                      "nodeType": "VariableDeclaration",
                      "scope": 896,
                      "src": "5052:24:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 726,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5052:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 727,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5052:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 730,
                      "name": "description",
                      "nodeType": "VariableDeclaration",
                      "scope": 896,
                      "src": "5078:25:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 729,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5078:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4975:129:2"
                },
                "returnParameters": {
                  "id": 734,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 733,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 896,
                      "src": "5121:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 732,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5121:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5120:6:2"
                },
                "scope": 1587,
                "src": "4959:2133:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 972,
                  "nodeType": "Block",
                  "src": "7137:529:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$630",
                              "typeString": "enum GovernorAlpha.ProposalState"
                            },
                            "id": 907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 903,
                                  "name": "proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 898,
                                  "src": "7161:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 902,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1335,
                                "src": "7155:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$630_$",
                                  "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7155:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 905,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 630,
                                "src": "7176:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                  "typeString": "type(enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Succeeded",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7176:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "src": "7155:44:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c2063616e206f6e6c792062652071756575656420696620697420697320737563636565646564",
                            "id": 908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7201:70:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1d9165de7b961db8df575169dadfdce4206cbf37571a45b735e6bcfda22b83b1",
                              "typeString": "literal_string \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\""
                            },
                            "value": "GovernorAlpha::queue: proposal can only be queued if it is succeeded"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1d9165de7b961db8df575169dadfdce4206cbf37571a45b735e6bcfda22b83b1",
                              "typeString": "literal_string \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\""
                            }
                          ],
                          "id": 901,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "7147:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7147:125:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 910,
                      "nodeType": "ExpressionStatement",
                      "src": "7147:125:2"
                    },
                    {
                      "assignments": [
                        912
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 912,
                          "name": "proposal",
                          "nodeType": "VariableDeclaration",
                          "scope": 972,
                          "src": "7282:25:2",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                            "typeString": "struct GovernorAlpha.Proposal"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 911,
                            "name": "Proposal",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 614,
                            "src": "7282:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 916,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 913,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "7310:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                            "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                          }
                        },
                        "id": 915,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 914,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "7320:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7310:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_storage",
                          "typeString": "struct GovernorAlpha.Proposal storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7282:49:2"
                    },
                    {
                      "assignments": [
                        918
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 918,
                          "name": "eta",
                          "nodeType": "VariableDeclaration",
                          "scope": 972,
                          "src": "7341:8:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 917,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "7341:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 926,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 920,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3827,
                              "src": "7359:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7359:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 922,
                                "name": "timelock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 575,
                                "src": "7376:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                                  "typeString": "contract TimelockInterface"
                                }
                              },
                              "id": 923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "delay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1592,
                              "src": "7376:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7376:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 919,
                          "name": "add256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1553,
                          "src": "7352:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7352:41:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7341:52:2"
                    },
                    {
                      "body": {
                        "id": 959,
                        "nodeType": "Block",
                        "src": "7454:132:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 940,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 912,
                                      "src": "7483:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 941,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "targets",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 588,
                                    "src": "7483:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 943,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 942,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 928,
                                    "src": "7500:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7483:19:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 944,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 912,
                                      "src": "7504:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 945,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 591,
                                    "src": "7504:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 947,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 946,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 928,
                                    "src": "7520:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7504:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 948,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 912,
                                      "src": "7524:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 949,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "signatures",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 594,
                                    "src": "7524:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                      "typeString": "string storage ref[] storage ref"
                                    }
                                  },
                                  "id": 951,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 950,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 928,
                                    "src": "7544:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7524:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 952,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 912,
                                      "src": "7548:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 953,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "calldatas",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 597,
                                    "src": "7548:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                      "typeString": "bytes storage ref[] storage ref"
                                    }
                                  },
                                  "id": 955,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 954,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 928,
                                    "src": "7567:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7548:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 956,
                                  "name": "eta",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 918,
                                  "src": "7571:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 939,
                                "name": "_queueOrRevert",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1015,
                                "src": "7468:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256,string memory,bytes memory,uint256)"
                                }
                              },
                              "id": 957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7468:107:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 958,
                            "nodeType": "ExpressionStatement",
                            "src": "7468:107:2"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 931,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 928,
                          "src": "7420:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 932,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 912,
                              "src": "7424:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 933,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "targets",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "7424:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 934,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7424:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7420:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 960,
                      "initializationExpression": {
                        "assignments": [
                          928
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 928,
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "scope": 960,
                            "src": "7408:6:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 927,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7408:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 930,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7417:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7408:10:2"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "7449:3:2",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 936,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 928,
                            "src": "7449:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 938,
                        "nodeType": "ExpressionStatement",
                        "src": "7449:3:2"
                      },
                      "nodeType": "ForStatement",
                      "src": "7403:183:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 961,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 912,
                            "src": "7595:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal storage pointer"
                            }
                          },
                          "id": 963,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "eta",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 585,
                          "src": "7595:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 964,
                          "name": "eta",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 918,
                          "src": "7610:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7595:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 966,
                      "nodeType": "ExpressionStatement",
                      "src": "7595:18:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 968,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 898,
                            "src": "7643:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 969,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 918,
                            "src": "7655:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 967,
                          "name": "ProposalQueued",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 692,
                          "src": "7628:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (uint256,uint256)"
                          }
                        },
                        "id": 970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7628:31:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 971,
                      "nodeType": "EmitStatement",
                      "src": "7623:36:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 973,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "queue",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 899,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 898,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 973,
                      "src": "7113:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 897,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7113:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7112:17:2"
                },
                "returnParameters": {
                  "id": 900,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7137:0:2"
                },
                "scope": 1587,
                "src": "7098:568:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1014,
                  "nodeType": "Block",
                  "src": "7787:258:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "7805:88:2",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 992,
                                          "name": "target",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 975,
                                          "src": "7855:6:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 993,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 977,
                                          "src": "7863:5:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 994,
                                          "name": "signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 979,
                                          "src": "7870:9:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 995,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 981,
                                          "src": "7881:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 996,
                                          "name": "eta",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 983,
                                          "src": "7887:3:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 990,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3824,
                                          "src": "7844:3:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 991,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7844:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 997,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7844:47:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 989,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3831,
                                    "src": "7834:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 998,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7834:58:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 987,
                                  "name": "timelock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 575,
                                  "src": "7806:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                                    "typeString": "contract TimelockInterface"
                                  }
                                },
                                "id": 988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "queuedTransactions",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1607,
                                "src": "7806:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (bytes32) view external returns (bool)"
                                }
                              },
                              "id": 999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7806:87:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a2070726f706f73616c20616374696f6e20616c72656164792071756575656420617420657461",
                            "id": 1001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7895:70:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9f2f7c3bae6cb2a10b5b2bdd0f8af6cd89782d3f0c1e0795e81a133975b25c86",
                              "typeString": "literal_string \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\""
                            },
                            "value": "GovernorAlpha::_queueOrRevert: proposal action already queued at eta"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9f2f7c3bae6cb2a10b5b2bdd0f8af6cd89782d3f0c1e0795e81a133975b25c86",
                              "typeString": "literal_string \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\""
                            }
                          ],
                          "id": 986,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "7797:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7797:169:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1003,
                      "nodeType": "ExpressionStatement",
                      "src": "7797:169:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1007,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 975,
                            "src": "8002:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1008,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 977,
                            "src": "8010:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1009,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 979,
                            "src": "8017:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1010,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 981,
                            "src": "8028:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1011,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 983,
                            "src": "8034:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1004,
                            "name": "timelock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 575,
                            "src": "7976:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                              "typeString": "contract TimelockInterface"
                            }
                          },
                          "id": 1006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "queueTransaction",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1622,
                          "src": "7976:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (address,uint256,string memory,bytes memory,uint256) external returns (bytes32)"
                          }
                        },
                        "id": 1012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7976:62:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 1013,
                      "nodeType": "ExpressionStatement",
                      "src": "7976:62:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1015,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_queueOrRevert",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 984,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 975,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 1015,
                      "src": "7696:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 974,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7696:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 977,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1015,
                      "src": "7712:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 976,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7712:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 979,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 1015,
                      "src": "7724:23:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 978,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "7724:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 981,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 1015,
                      "src": "7749:17:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 980,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7749:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 983,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 1015,
                      "src": "7768:8:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 982,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7768:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7695:82:2"
                },
                "returnParameters": {
                  "id": 985,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7787:0:2"
                },
                "scope": 1587,
                "src": "7672:373:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1090,
                  "nodeType": "Block",
                  "src": "8100:516:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$630",
                              "typeString": "enum GovernorAlpha.ProposalState"
                            },
                            "id": 1026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1022,
                                  "name": "proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1017,
                                  "src": "8124:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1021,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1335,
                                "src": "8118:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$630_$",
                                  "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 1023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8118:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1024,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 630,
                                "src": "8139:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                  "typeString": "type(enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 1025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Queued",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8139:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "src": "8118:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c2063616e206f6e6c7920626520657865637574656420696620697420697320717565756564",
                            "id": 1027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8161:71:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1e6b39f7a3cdaa9f8cd196650711f6f6106ff22624580132558c7d2885a2b40c",
                              "typeString": "literal_string \"GovernorAlpha::execute: proposal can only be executed if it is queued\""
                            },
                            "value": "GovernorAlpha::execute: proposal can only be executed if it is queued"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1e6b39f7a3cdaa9f8cd196650711f6f6106ff22624580132558c7d2885a2b40c",
                              "typeString": "literal_string \"GovernorAlpha::execute: proposal can only be executed if it is queued\""
                            }
                          ],
                          "id": 1020,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "8110:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8110:123:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1029,
                      "nodeType": "ExpressionStatement",
                      "src": "8110:123:2"
                    },
                    {
                      "assignments": [
                        1031
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1031,
                          "name": "proposal",
                          "nodeType": "VariableDeclaration",
                          "scope": 1090,
                          "src": "8243:25:2",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                            "typeString": "struct GovernorAlpha.Proposal"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 1030,
                            "name": "Proposal",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 614,
                            "src": "8243:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1035,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1032,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "8271:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                            "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                          }
                        },
                        "id": 1034,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1033,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1017,
                          "src": "8281:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8271:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_storage",
                          "typeString": "struct GovernorAlpha.Proposal storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8243:49:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1036,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1031,
                            "src": "8302:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal storage pointer"
                            }
                          },
                          "id": 1038,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 609,
                          "src": "8302:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8322:4:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "8302:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1041,
                      "nodeType": "ExpressionStatement",
                      "src": "8302:24:2"
                    },
                    {
                      "body": {
                        "id": 1084,
                        "nodeType": "Block",
                        "src": "8387:180:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1064,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1031,
                                      "src": "8455:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1065,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "targets",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 588,
                                    "src": "8455:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 1067,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1066,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1043,
                                    "src": "8472:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8455:19:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1068,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1031,
                                      "src": "8476:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1069,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 591,
                                    "src": "8476:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 1071,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1070,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1043,
                                    "src": "8492:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8476:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1072,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1031,
                                      "src": "8496:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1073,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "signatures",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 594,
                                    "src": "8496:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                      "typeString": "string storage ref[] storage ref"
                                    }
                                  },
                                  "id": 1075,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1074,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1043,
                                    "src": "8516:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8496:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1076,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1031,
                                      "src": "8520:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1077,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "calldatas",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 597,
                                    "src": "8520:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                      "typeString": "bytes storage ref[] storage ref"
                                    }
                                  },
                                  "id": 1079,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1078,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1043,
                                    "src": "8539:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8520:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1080,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1031,
                                    "src": "8543:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1081,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "eta",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 585,
                                  "src": "8543:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1059,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1031,
                                        "src": "8435:8:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 1060,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "values",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 591,
                                      "src": "8435:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 1062,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1061,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1043,
                                      "src": "8451:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8435:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1054,
                                      "name": "timelock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 575,
                                      "src": "8401:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                                        "typeString": "contract TimelockInterface"
                                      }
                                    },
                                    "id": 1057,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "executeTransaction",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1650,
                                    "src": "8401:27:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"
                                    }
                                  },
                                  "id": 1058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8401:33:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$value_$",
                                    "typeString": "function (uint256) pure returns (function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory))"
                                  }
                                },
                                "id": 1063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8401:53:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$value",
                                  "typeString": "function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"
                                }
                              },
                              "id": 1082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8401:155:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1083,
                            "nodeType": "ExpressionStatement",
                            "src": "8401:155:2"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1046,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1043,
                          "src": "8353:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1047,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "8357:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1048,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "targets",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "8357:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 1049,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8357:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8353:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1085,
                      "initializationExpression": {
                        "assignments": [
                          1043
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1043,
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "scope": 1085,
                            "src": "8341:6:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1042,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8341:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1045,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8350:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8341:10:2"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "8382:3:2",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1051,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1043,
                            "src": "8382:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1053,
                        "nodeType": "ExpressionStatement",
                        "src": "8382:3:2"
                      },
                      "nodeType": "ForStatement",
                      "src": "8336:231:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1087,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1017,
                            "src": "8598:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1086,
                          "name": "ProposalExecuted",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 696,
                          "src": "8581:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 1088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8581:28:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1089,
                      "nodeType": "EmitStatement",
                      "src": "8576:33:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1091,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "execute",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1018,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1017,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1091,
                      "src": "8068:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1016,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8068:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8067:17:2"
                },
                "returnParameters": {
                  "id": 1019,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8100:0:2"
                },
                "scope": 1587,
                "src": "8051:565:2",
                "stateMutability": "payable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1180,
                  "nodeType": "Block",
                  "src": "8662:669:2",
                  "statements": [
                    {
                      "assignments": [
                        1097
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1097,
                          "name": "state",
                          "nodeType": "VariableDeclaration",
                          "scope": 1180,
                          "src": "8672:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$630",
                            "typeString": "enum GovernorAlpha.ProposalState"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 1096,
                            "name": "ProposalState",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 630,
                            "src": "8672:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$630",
                              "typeString": "enum GovernorAlpha.ProposalState"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1101,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1099,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1093,
                            "src": "8700:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1098,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1335,
                          "src": "8694:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$630_$",
                            "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                          }
                        },
                        "id": 1100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8694:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$630",
                          "typeString": "enum GovernorAlpha.ProposalState"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8672:39:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$630",
                              "typeString": "enum GovernorAlpha.ProposalState"
                            },
                            "id": 1106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1103,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1097,
                              "src": "8729:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1104,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 630,
                                "src": "8738:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                  "typeString": "type(enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 1105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Executed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8738:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "src": "8729:31:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063616e63656c2065786563757465642070726f706f73616c",
                            "id": 1107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8762:56:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e9d477897cfec9b3c036d388c3168bf4ff9f6d4c49c58b845fd31f77ad2af11d",
                              "typeString": "literal_string \"GovernorAlpha::cancel: cannot cancel executed proposal\""
                            },
                            "value": "GovernorAlpha::cancel: cannot cancel executed proposal"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e9d477897cfec9b3c036d388c3168bf4ff9f6d4c49c58b845fd31f77ad2af11d",
                              "typeString": "literal_string \"GovernorAlpha::cancel: cannot cancel executed proposal\""
                            }
                          ],
                          "id": 1102,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "8721:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8721:98:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1109,
                      "nodeType": "ExpressionStatement",
                      "src": "8721:98:2"
                    },
                    {
                      "assignments": [
                        1111
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1111,
                          "name": "proposal",
                          "nodeType": "VariableDeclaration",
                          "scope": 1180,
                          "src": "8830:25:2",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                            "typeString": "struct GovernorAlpha.Proposal"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 1110,
                            "name": "Proposal",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 614,
                            "src": "8830:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1115,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1112,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "8858:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                            "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                          }
                        },
                        "id": 1114,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1113,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1093,
                          "src": "8868:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8858:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_storage",
                          "typeString": "struct GovernorAlpha.Proposal storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8830:49:2"
                    },
                    {
                      "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,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1119,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1111,
                                    "src": "8915:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1120,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "proposer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 583,
                                  "src": "8915:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1122,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3827,
                                        "src": "8941:5:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 1123,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "number",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8941:12:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 1124,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8955:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "id": 1121,
                                    "name": "sub256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1574,
                                    "src": "8934:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8934:23:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1117,
                                  "name": "uni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 577,
                                  "src": "8897:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UniInterface_$1661",
                                    "typeString": "contract UniInterface"
                                  }
                                },
                                "id": 1118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPriorVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1660,
                                "src": "8897:17:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                                  "typeString": "function (address,uint256) view external returns (uint96)"
                                }
                              },
                              "id": 1126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8897:61:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1127,
                                "name": "proposalThreshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 549,
                                "src": "8961:17:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 1128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8961:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8897:83:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722061626f7665207468726573686f6c64",
                            "id": 1130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8982:49:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_955146449a8b4861230739fdd349c84a094c3689202256bb43330a0b0d63a0ae",
                              "typeString": "literal_string \"GovernorAlpha::cancel: proposer above threshold\""
                            },
                            "value": "GovernorAlpha::cancel: proposer above threshold"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_955146449a8b4861230739fdd349c84a094c3689202256bb43330a0b0d63a0ae",
                              "typeString": "literal_string \"GovernorAlpha::cancel: proposer above threshold\""
                            }
                          ],
                          "id": 1116,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "8889:7:2",
                          "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": "8889:143:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1132,
                      "nodeType": "ExpressionStatement",
                      "src": "8889:143:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1133,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1111,
                            "src": "9043:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal storage pointer"
                            }
                          },
                          "id": 1135,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "canceled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 607,
                          "src": "9043:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9063:4:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "9043:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1138,
                      "nodeType": "ExpressionStatement",
                      "src": "9043:24:2"
                    },
                    {
                      "body": {
                        "id": 1174,
                        "nodeType": "Block",
                        "src": "9128:153:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1154,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1111,
                                      "src": "9169:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1155,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "targets",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 588,
                                    "src": "9169:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 1157,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1156,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1140,
                                    "src": "9186:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9169:19:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1158,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1111,
                                      "src": "9190:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1159,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 591,
                                    "src": "9190:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 1161,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1160,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1140,
                                    "src": "9206:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9190:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1162,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1111,
                                      "src": "9210:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1163,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "signatures",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 594,
                                    "src": "9210:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                      "typeString": "string storage ref[] storage ref"
                                    }
                                  },
                                  "id": 1165,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1164,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1140,
                                    "src": "9230:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9210:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1166,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1111,
                                      "src": "9234:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1167,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "calldatas",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 597,
                                    "src": "9234:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                      "typeString": "bytes storage ref[] storage ref"
                                    }
                                  },
                                  "id": 1169,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1168,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1140,
                                    "src": "9253:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9234:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1170,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1111,
                                    "src": "9257:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1171,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "eta",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 585,
                                  "src": "9257:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1151,
                                  "name": "timelock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 575,
                                  "src": "9142:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                                    "typeString": "contract TimelockInterface"
                                  }
                                },
                                "id": 1153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cancelTransaction",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1635,
                                "src": "9142:26:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256,string memory,bytes memory,uint256) external"
                                }
                              },
                              "id": 1172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9142:128:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1173,
                            "nodeType": "ExpressionStatement",
                            "src": "9142:128:2"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1143,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1140,
                          "src": "9094:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1144,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "9098:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1145,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "targets",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "9098:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 1146,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9098:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9094:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1175,
                      "initializationExpression": {
                        "assignments": [
                          1140
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1140,
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "scope": 1175,
                            "src": "9082:6:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1139,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9082:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1142,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9091:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9082:10:2"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "9123:3:2",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1148,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1140,
                            "src": "9123:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1150,
                        "nodeType": "ExpressionStatement",
                        "src": "9123:3:2"
                      },
                      "nodeType": "ForStatement",
                      "src": "9077:204:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1177,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1093,
                            "src": "9313:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1176,
                          "name": "ProposalCanceled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 686,
                          "src": "9296:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 1178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9296:28:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1179,
                      "nodeType": "EmitStatement",
                      "src": "9291:33:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1181,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "cancel",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1094,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1093,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1181,
                      "src": "8638:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1092,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8638:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8637:17:2"
                },
                "returnParameters": {
                  "id": 1095,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8662:0:2"
                },
                "scope": 1587,
                "src": "8622:709:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1214,
                  "nodeType": "Block",
                  "src": "9497:124:2",
                  "statements": [
                    {
                      "assignments": [
                        1199
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1199,
                          "name": "p",
                          "nodeType": "VariableDeclaration",
                          "scope": 1214,
                          "src": "9507:18:2",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                            "typeString": "struct GovernorAlpha.Proposal"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 1198,
                            "name": "Proposal",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 614,
                            "src": "9507:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1203,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1200,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "9528:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                            "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                          }
                        },
                        "id": 1202,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1201,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1183,
                          "src": "9538:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9528:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_storage",
                          "typeString": "struct GovernorAlpha.Proposal storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9507:42:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1204,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1199,
                              "src": "9567:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1205,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "targets",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 588,
                            "src": "9567:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1206,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1199,
                              "src": "9578:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1207,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 591,
                            "src": "9578:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1208,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1199,
                              "src": "9588:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1209,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signatures",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 594,
                            "src": "9588:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1210,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1199,
                              "src": "9602:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1211,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "calldatas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 597,
                            "src": "9602:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                              "typeString": "bytes storage ref[] storage ref"
                            }
                          }
                        ],
                        "id": 1212,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "9566:48:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_storage_$_t_array$_t_uint256_$dyn_storage_$_t_array$_t_string_storage_$dyn_storage_$_t_array$_t_bytes_storage_$dyn_storage_$",
                          "typeString": "tuple(address[] storage ref,uint256[] storage ref,string storage ref[] storage ref,bytes storage ref[] storage ref)"
                        }
                      },
                      "functionReturnParameters": 1197,
                      "id": 1213,
                      "nodeType": "Return",
                      "src": "9559:55:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1215,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getActions",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1184,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1183,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1215,
                      "src": "9357:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1182,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9357:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9356:17:2"
                },
                "returnParameters": {
                  "id": 1197,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1187,
                      "name": "targets",
                      "nodeType": "VariableDeclaration",
                      "scope": 1215,
                      "src": "9395:24:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9395:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1186,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9395:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1190,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 1215,
                      "src": "9421:20:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1188,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9421:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1189,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9421:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1193,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "scope": 1215,
                      "src": "9443:26:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                        "typeString": "string[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1191,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9443:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "id": 1192,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9443:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                          "typeString": "string[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1196,
                      "name": "calldatas",
                      "nodeType": "VariableDeclaration",
                      "scope": 1215,
                      "src": "9471:24:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1194,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9471:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 1195,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9471:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9394:102:2"
                },
                "scope": 1587,
                "src": "9337:284:2",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1231,
                  "nodeType": "Block",
                  "src": "9716:61:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1224,
                              "name": "proposals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 634,
                              "src": "9733:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                                "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                              }
                            },
                            "id": 1226,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1225,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1217,
                              "src": "9743:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9733:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage",
                              "typeString": "struct GovernorAlpha.Proposal storage ref"
                            }
                          },
                          "id": 1227,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "receipts",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 613,
                          "src": "9733:30:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$621_storage_$",
                            "typeString": "mapping(address => struct GovernorAlpha.Receipt storage ref)"
                          }
                        },
                        "id": 1229,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1228,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1219,
                          "src": "9764:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9733:37:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$621_storage",
                          "typeString": "struct GovernorAlpha.Receipt storage ref"
                        }
                      },
                      "functionReturnParameters": 1223,
                      "id": 1230,
                      "nodeType": "Return",
                      "src": "9726:44:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1232,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReceipt",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1220,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1217,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1232,
                      "src": "9647:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1216,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9647:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1219,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 1232,
                      "src": "9664:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1218,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9664:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9646:32:2"
                },
                "returnParameters": {
                  "id": 1223,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1222,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1232,
                      "src": "9700:14:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Receipt_$621_memory_ptr",
                        "typeString": "struct GovernorAlpha.Receipt"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1221,
                        "name": "Receipt",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 621,
                        "src": "9700:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                          "typeString": "struct GovernorAlpha.Receipt"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9699:16:2"
                },
                "scope": 1587,
                "src": "9627:150:2",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1334,
                  "nodeType": "Block",
                  "src": "9851:957:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1240,
                                "name": "proposalCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 579,
                                "src": "9869:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1241,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1234,
                                "src": "9886:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9869:27:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1243,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1234,
                                "src": "9900:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9913:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9900:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "9869:45:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070726f706f73616c206964",
                            "id": 1247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9916:43:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4e13bf7de4ba5f0690868b0ce8fbbb5874a1007783c383619a200c32a346f517",
                              "typeString": "literal_string \"GovernorAlpha::state: invalid proposal id\""
                            },
                            "value": "GovernorAlpha::state: invalid proposal id"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4e13bf7de4ba5f0690868b0ce8fbbb5874a1007783c383619a200c32a346f517",
                              "typeString": "literal_string \"GovernorAlpha::state: invalid proposal id\""
                            }
                          ],
                          "id": 1239,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "9861:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9861:99:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1249,
                      "nodeType": "ExpressionStatement",
                      "src": "9861:99:2"
                    },
                    {
                      "assignments": [
                        1251
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1251,
                          "name": "proposal",
                          "nodeType": "VariableDeclaration",
                          "scope": 1334,
                          "src": "9970:25:2",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                            "typeString": "struct GovernorAlpha.Proposal"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 1250,
                            "name": "Proposal",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 614,
                            "src": "9970:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1255,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1252,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "9998:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                            "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                          }
                        },
                        "id": 1254,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1253,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1234,
                          "src": "10008:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9998:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_storage",
                          "typeString": "struct GovernorAlpha.Proposal storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9970:49:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1256,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1251,
                          "src": "10033:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                            "typeString": "struct GovernorAlpha.Proposal storage pointer"
                          }
                        },
                        "id": 1257,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "canceled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 607,
                        "src": "10033:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1262,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3827,
                              "src": "10116:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 1263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10116:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1264,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1251,
                              "src": "10132:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1265,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 599,
                            "src": "10132:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10116:35:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1271,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "10216:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10216:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1273,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1251,
                                "src": "10232:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 1274,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 601,
                              "src": "10232:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10216:33:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1280,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1251,
                                    "src": "10313:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1281,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "forVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 603,
                                  "src": "10313:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1282,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1251,
                                    "src": "10334:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1283,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "againstVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 605,
                                  "src": "10334:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10313:42:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1285,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1251,
                                    "src": "10359:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1286,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "forVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 603,
                                  "src": "10359:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1287,
                                    "name": "quorumVotes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 541,
                                    "src": "10379:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                      "typeString": "function () pure returns (uint256)"
                                    }
                                  },
                                  "id": 1288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10379:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10359:33:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10313:79:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1295,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1251,
                                    "src": "10458:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1296,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "eta",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 585,
                                  "src": "10458:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10474:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10458:17:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1303,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1251,
                                    "src": "10542:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1304,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "executed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 609,
                                  "src": "10542:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1318,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1309,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3827,
                                        "src": "10625:5:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 1310,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "10625:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1312,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1251,
                                            "src": "10651:8:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                              "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                            }
                                          },
                                          "id": 1313,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "eta",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 585,
                                          "src": "10651:12:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1314,
                                              "name": "timelock",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 575,
                                              "src": "10665:8:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_TimelockInterface_$1651",
                                                "typeString": "contract TimelockInterface"
                                              }
                                            },
                                            "id": 1315,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "GRACE_PERIOD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1597,
                                            "src": "10665:21:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view external returns (uint256)"
                                            }
                                          },
                                          "id": 1316,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10665:23:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1311,
                                        "name": "add256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1553,
                                        "src": "10644:6:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1317,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10644:45:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10625:64:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 1326,
                                    "nodeType": "Block",
                                    "src": "10750:52:2",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1323,
                                            "name": "ProposalState",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 630,
                                            "src": "10771:13:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                              "typeString": "type(enum GovernorAlpha.ProposalState)"
                                            }
                                          },
                                          "id": 1324,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "Queued",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "10771:20:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ProposalState_$630",
                                            "typeString": "enum GovernorAlpha.ProposalState"
                                          }
                                        },
                                        "functionReturnParameters": 1238,
                                        "id": 1325,
                                        "nodeType": "Return",
                                        "src": "10764:27:2"
                                      }
                                    ]
                                  },
                                  "id": 1327,
                                  "nodeType": "IfStatement",
                                  "src": "10621:181:2",
                                  "trueBody": {
                                    "id": 1322,
                                    "nodeType": "Block",
                                    "src": "10691:53:2",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1319,
                                            "name": "ProposalState",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 630,
                                            "src": "10712:13:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                              "typeString": "type(enum GovernorAlpha.ProposalState)"
                                            }
                                          },
                                          "id": 1320,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "Expired",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "10712:21:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ProposalState_$630",
                                            "typeString": "enum GovernorAlpha.ProposalState"
                                          }
                                        },
                                        "functionReturnParameters": 1238,
                                        "id": 1321,
                                        "nodeType": "Return",
                                        "src": "10705:28:2"
                                      }
                                    ]
                                  }
                                },
                                "id": 1328,
                                "nodeType": "IfStatement",
                                "src": "10538:264:2",
                                "trueBody": {
                                  "id": 1308,
                                  "nodeType": "Block",
                                  "src": "10561:54:2",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1305,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 630,
                                          "src": "10582:13:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                            "typeString": "type(enum GovernorAlpha.ProposalState)"
                                          }
                                        },
                                        "id": 1306,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "Executed",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "10582:22:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$630",
                                          "typeString": "enum GovernorAlpha.ProposalState"
                                        }
                                      },
                                      "functionReturnParameters": 1238,
                                      "id": 1307,
                                      "nodeType": "Return",
                                      "src": "10575:29:2"
                                    }
                                  ]
                                }
                              },
                              "id": 1329,
                              "nodeType": "IfStatement",
                              "src": "10454:348:2",
                              "trueBody": {
                                "id": 1302,
                                "nodeType": "Block",
                                "src": "10477:55:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1299,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 630,
                                        "src": "10498:13:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                          "typeString": "type(enum GovernorAlpha.ProposalState)"
                                        }
                                      },
                                      "id": 1300,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Succeeded",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "10498:23:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$630",
                                        "typeString": "enum GovernorAlpha.ProposalState"
                                      }
                                    },
                                    "functionReturnParameters": 1238,
                                    "id": 1301,
                                    "nodeType": "Return",
                                    "src": "10491:30:2"
                                  }
                                ]
                              }
                            },
                            "id": 1330,
                            "nodeType": "IfStatement",
                            "src": "10309:493:2",
                            "trueBody": {
                              "id": 1294,
                              "nodeType": "Block",
                              "src": "10394:54:2",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1291,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 630,
                                      "src": "10415:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                        "typeString": "type(enum GovernorAlpha.ProposalState)"
                                      }
                                    },
                                    "id": 1292,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Defeated",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "10415:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$630",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    }
                                  },
                                  "functionReturnParameters": 1238,
                                  "id": 1293,
                                  "nodeType": "Return",
                                  "src": "10408:29:2"
                                }
                              ]
                            }
                          },
                          "id": 1331,
                          "nodeType": "IfStatement",
                          "src": "10212:590:2",
                          "trueBody": {
                            "id": 1279,
                            "nodeType": "Block",
                            "src": "10251:52:2",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1276,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 630,
                                    "src": "10272:13:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                      "typeString": "type(enum GovernorAlpha.ProposalState)"
                                    }
                                  },
                                  "id": 1277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10272:20:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$630",
                                    "typeString": "enum GovernorAlpha.ProposalState"
                                  }
                                },
                                "functionReturnParameters": 1238,
                                "id": 1278,
                                "nodeType": "Return",
                                "src": "10265:27:2"
                              }
                            ]
                          }
                        },
                        "id": 1332,
                        "nodeType": "IfStatement",
                        "src": "10112:690:2",
                        "trueBody": {
                          "id": 1270,
                          "nodeType": "Block",
                          "src": "10153:53:2",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1267,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 630,
                                  "src": "10174:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 1268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10174:21:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$630",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 1238,
                              "id": 1269,
                              "nodeType": "Return",
                              "src": "10167:28:2"
                            }
                          ]
                        }
                      },
                      "id": 1333,
                      "nodeType": "IfStatement",
                      "src": "10029:773:2",
                      "trueBody": {
                        "id": 1261,
                        "nodeType": "Block",
                        "src": "10052:54:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1258,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 630,
                                "src": "10073:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                  "typeString": "type(enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Canceled",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10073:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "functionReturnParameters": 1238,
                            "id": 1260,
                            "nodeType": "Return",
                            "src": "10066:29:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1335,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "state",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1235,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1234,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1335,
                      "src": "9798:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1233,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9798:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9797:17:2"
                },
                "returnParameters": {
                  "id": 1238,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1237,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1335,
                      "src": "9836:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$630",
                        "typeString": "enum GovernorAlpha.ProposalState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1236,
                        "name": "ProposalState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 630,
                        "src": "9836:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$630",
                          "typeString": "enum GovernorAlpha.ProposalState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9835:15:2"
                },
                "scope": 1587,
                "src": "9783:1025:2",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1349,
                  "nodeType": "Block",
                  "src": "10870:66:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1343,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3837,
                              "src": "10897:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10897:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1345,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1337,
                            "src": "10909:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1346,
                            "name": "support",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1339,
                            "src": "10921:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 1342,
                          "name": "_castVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1528,
                          "src": "10887:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                            "typeString": "function (address,uint256,bool)"
                          }
                        },
                        "id": 1347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10887:42:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "functionReturnParameters": 1341,
                      "id": 1348,
                      "nodeType": "Return",
                      "src": "10880:49:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1350,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "castVote",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1340,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1337,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "10832:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1336,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10832:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1339,
                      "name": "support",
                      "nodeType": "VariableDeclaration",
                      "scope": 1350,
                      "src": "10849:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1338,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10849:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10831:31:2"
                },
                "returnParameters": {
                  "id": 1341,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10870:0:2"
                },
                "scope": 1587,
                "src": "10814:122:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1428,
                  "nodeType": "Block",
                  "src": "11034:526:2",
                  "statements": [
                    {
                      "assignments": [
                        1364
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1364,
                          "name": "domainSeparator",
                          "nodeType": "VariableDeclaration",
                          "scope": 1428,
                          "src": "11044:23:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 1363,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11044:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1381,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1368,
                                "name": "DOMAIN_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 643,
                                "src": "11091:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1371,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 533,
                                        "src": "11124:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 1370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11118:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": "bytes"
                                    },
                                    "id": 1372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11118:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1369,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3831,
                                  "src": "11108:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 1373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11108:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1374,
                                  "name": "getChainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1586,
                                  "src": "11132:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 1375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11132:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1377,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3859,
                                    "src": "11154:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_GovernorAlpha_$1587",
                                      "typeString": "contract GovernorAlpha"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_GovernorAlpha_$1587",
                                      "typeString": "contract GovernorAlpha"
                                    }
                                  ],
                                  "id": 1376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11146:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 1378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11146:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1366,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "11080:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11080:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11080:80:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1365,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "11070:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 1380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11070:91:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11044:117:2"
                    },
                    {
                      "assignments": [
                        1383
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1383,
                          "name": "structHash",
                          "nodeType": "VariableDeclaration",
                          "scope": 1428,
                          "src": "11171:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 1382,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11171:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1392,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1387,
                                "name": "BALLOT_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 648,
                                "src": "11213:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1388,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1352,
                                "src": "11230:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1389,
                                "name": "support",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1354,
                                "src": "11242:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1385,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "11202:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11202:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11202:48:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1384,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "11192:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 1391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11192:59:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11171:80:2"
                    },
                    {
                      "assignments": [
                        1394
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1394,
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "scope": 1428,
                          "src": "11261:14:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 1393,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11261:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1403,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 1398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11305:10:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 1399,
                                "name": "domainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1364,
                                "src": "11317:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1400,
                                "name": "structHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1383,
                                "src": "11334:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1396,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "11288:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11288:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11288:57:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1395,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "11278:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 1402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11278:68:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11261:85:2"
                    },
                    {
                      "assignments": [
                        1405
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1405,
                          "name": "signatory",
                          "nodeType": "VariableDeclaration",
                          "scope": 1428,
                          "src": "11356:17:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1404,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11356:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1412,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1407,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1394,
                            "src": "11386:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1408,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1356,
                            "src": "11394:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1409,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1358,
                            "src": "11397:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1410,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1360,
                            "src": "11400:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1406,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3829,
                          "src": "11376:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 1411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11376:26:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11356:46:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1418,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1414,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1405,
                              "src": "11420:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11441:1:2",
                                  "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": 1415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11433:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11433:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "11420:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                            "id": 1419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11445:49:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c0985792d8cb800c80e50f8ecca736cc3e54b8c9588453e723506f4e50d429f9",
                              "typeString": "literal_string \"GovernorAlpha::castVoteBySig: invalid signature\""
                            },
                            "value": "GovernorAlpha::castVoteBySig: invalid signature"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c0985792d8cb800c80e50f8ecca736cc3e54b8c9588453e723506f4e50d429f9",
                              "typeString": "literal_string \"GovernorAlpha::castVoteBySig: invalid signature\""
                            }
                          ],
                          "id": 1413,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "11412:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11412:83:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1421,
                      "nodeType": "ExpressionStatement",
                      "src": "11412:83:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1423,
                            "name": "signatory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1405,
                            "src": "11522:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1424,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "11533:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1425,
                            "name": "support",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1354,
                            "src": "11545:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 1422,
                          "name": "_castVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1528,
                          "src": "11512:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                            "typeString": "function (address,uint256,bool)"
                          }
                        },
                        "id": 1426,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11512:41:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "functionReturnParameters": 1362,
                      "id": 1427,
                      "nodeType": "Return",
                      "src": "11505:48:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1429,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "castVoteBySig",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1361,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1352,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1429,
                      "src": "10965:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1351,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10965:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1354,
                      "name": "support",
                      "nodeType": "VariableDeclaration",
                      "scope": 1429,
                      "src": "10982:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1353,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10982:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1356,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 1429,
                      "src": "10996:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1355,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "10996:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1358,
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 1429,
                      "src": "11005:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1357,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11005:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1360,
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 1429,
                      "src": "11016:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1359,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11016:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10964:62:2"
                },
                "returnParameters": {
                  "id": 1362,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "11034:0:2"
                },
                "scope": 1587,
                "src": "10942:618:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1527,
                  "nodeType": "Block",
                  "src": "11640:745:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$630",
                              "typeString": "enum GovernorAlpha.ProposalState"
                            },
                            "id": 1444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1440,
                                  "name": "proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1433,
                                  "src": "11664:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1439,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1335,
                                "src": "11658:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$630_$",
                                  "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 1441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11658:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1442,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 630,
                                "src": "11679:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$630_$",
                                  "typeString": "type(enum GovernorAlpha.ProposalState)"
                                }
                              },
                              "id": 1443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11679:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$630",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "src": "11658:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6720697320636c6f736564",
                            "id": 1445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11701:44:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eede0aeb04f75d58f89f0b84608a4108da079ec9b462189375bbf8fd7e8edbaa",
                              "typeString": "literal_string \"GovernorAlpha::_castVote: voting is closed\""
                            },
                            "value": "GovernorAlpha::_castVote: voting is closed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_eede0aeb04f75d58f89f0b84608a4108da079ec9b462189375bbf8fd7e8edbaa",
                              "typeString": "literal_string \"GovernorAlpha::_castVote: voting is closed\""
                            }
                          ],
                          "id": 1438,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "11650:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11650:96:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1447,
                      "nodeType": "ExpressionStatement",
                      "src": "11650:96:2"
                    },
                    {
                      "assignments": [
                        1449
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1449,
                          "name": "proposal",
                          "nodeType": "VariableDeclaration",
                          "scope": 1527,
                          "src": "11756:25:2",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                            "typeString": "struct GovernorAlpha.Proposal"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 1448,
                            "name": "Proposal",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 614,
                            "src": "11756:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1453,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1450,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "11784:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$614_storage_$",
                            "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                          }
                        },
                        "id": 1452,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1451,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1433,
                          "src": "11794:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11784:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$614_storage",
                          "typeString": "struct GovernorAlpha.Proposal storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11756:49:2"
                    },
                    {
                      "assignments": [
                        1455
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1455,
                          "name": "receipt",
                          "nodeType": "VariableDeclaration",
                          "scope": 1527,
                          "src": "11815:23:2",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                            "typeString": "struct GovernorAlpha.Receipt"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 1454,
                            "name": "Receipt",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 621,
                            "src": "11815:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                              "typeString": "struct GovernorAlpha.Receipt"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1460,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1456,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1449,
                            "src": "11841:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal storage pointer"
                            }
                          },
                          "id": 1457,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "receipts",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 613,
                          "src": "11841:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$621_storage_$",
                            "typeString": "mapping(address => struct GovernorAlpha.Receipt storage ref)"
                          }
                        },
                        "id": 1459,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1458,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1431,
                          "src": "11859:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11841:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$621_storage",
                          "typeString": "struct GovernorAlpha.Receipt storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11815:50:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1462,
                                "name": "receipt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1455,
                                "src": "11883:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Receipt storage pointer"
                                }
                              },
                              "id": 1463,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "hasVoted",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 616,
                              "src": "11883:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 1464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11903:5:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "src": "11883:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74657220616c726561647920766f746564",
                            "id": 1466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11910:47:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5b6e843e3ab725378b7b68db9a8698ac55194c56a0430edac6725cbe558ee624",
                              "typeString": "literal_string \"GovernorAlpha::_castVote: voter already voted\""
                            },
                            "value": "GovernorAlpha::_castVote: voter already voted"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5b6e843e3ab725378b7b68db9a8698ac55194c56a0430edac6725cbe558ee624",
                              "typeString": "literal_string \"GovernorAlpha::_castVote: voter already voted\""
                            }
                          ],
                          "id": 1461,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "11875:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11875:83:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1468,
                      "nodeType": "ExpressionStatement",
                      "src": "11875:83:2"
                    },
                    {
                      "assignments": [
                        1470
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1470,
                          "name": "votes",
                          "nodeType": "VariableDeclaration",
                          "scope": 1527,
                          "src": "11968:12:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 1469,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "11968:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1477,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1473,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "12001:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1474,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1449,
                              "src": "12008:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 1475,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 599,
                            "src": "12008:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1471,
                            "name": "uni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 577,
                            "src": "11983:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniInterface_$1661",
                              "typeString": "contract UniInterface"
                            }
                          },
                          "id": 1472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getPriorVotes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1660,
                          "src": "11983:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                            "typeString": "function (address,uint256) view external returns (uint96)"
                          }
                        },
                        "id": 1476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11983:45:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11968:60:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 1478,
                        "name": "support",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "12043:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1500,
                        "nodeType": "Block",
                        "src": "12135:85:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1490,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1449,
                                  "src": "12149:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                    "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                  }
                                },
                                "id": 1492,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "againstVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 605,
                                "src": "12149:21:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1494,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1449,
                                      "src": "12180:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1495,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "againstVotes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 605,
                                    "src": "12180:21:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1496,
                                    "name": "votes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1470,
                                    "src": "12203:5:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 1493,
                                  "name": "add256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1553,
                                  "src": "12173:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12173:36:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12149:60:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1499,
                            "nodeType": "ExpressionStatement",
                            "src": "12149:60:2"
                          }
                        ]
                      },
                      "id": 1501,
                      "nodeType": "IfStatement",
                      "src": "12039:181:2",
                      "trueBody": {
                        "id": 1489,
                        "nodeType": "Block",
                        "src": "12052:77:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1479,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1449,
                                  "src": "12066:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                    "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                  }
                                },
                                "id": 1481,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "forVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 603,
                                "src": "12066:17:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1483,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1449,
                                      "src": "12093:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$614_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1484,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "forVotes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 603,
                                    "src": "12093:17:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1485,
                                    "name": "votes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1470,
                                    "src": "12112:5:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 1482,
                                  "name": "add256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1553,
                                  "src": "12086:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12086:32:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12066:52:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1488,
                            "nodeType": "ExpressionStatement",
                            "src": "12066:52:2"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1502,
                            "name": "receipt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1455,
                            "src": "12230:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                              "typeString": "struct GovernorAlpha.Receipt storage pointer"
                            }
                          },
                          "id": 1504,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "hasVoted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 616,
                          "src": "12230:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12249:4:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "12230:23:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1507,
                      "nodeType": "ExpressionStatement",
                      "src": "12230:23:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1508,
                            "name": "receipt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1455,
                            "src": "12263:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                              "typeString": "struct GovernorAlpha.Receipt storage pointer"
                            }
                          },
                          "id": 1510,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "support",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 618,
                          "src": "12263:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1511,
                          "name": "support",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1435,
                          "src": "12281:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12263:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1513,
                      "nodeType": "ExpressionStatement",
                      "src": "12263:25:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1514,
                            "name": "receipt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1455,
                            "src": "12298:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$621_storage_ptr",
                              "typeString": "struct GovernorAlpha.Receipt storage pointer"
                            }
                          },
                          "id": 1516,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "votes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 620,
                          "src": "12298:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1517,
                          "name": "votes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1470,
                          "src": "12314:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "12298:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "id": 1519,
                      "nodeType": "ExpressionStatement",
                      "src": "12298:21:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1521,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "12344:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1522,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1433,
                            "src": "12351:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1523,
                            "name": "support",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1435,
                            "src": "12363:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1524,
                            "name": "votes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1470,
                            "src": "12372:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 1520,
                          "name": "VoteCast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 682,
                          "src": "12335:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,bool,uint256)"
                          }
                        },
                        "id": 1525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12335:43:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1526,
                      "nodeType": "EmitStatement",
                      "src": "12330:48:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1528,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_castVote",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1436,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1431,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 1528,
                      "src": "11585:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1430,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11585:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1433,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1528,
                      "src": "11600:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1432,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11600:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1435,
                      "name": "support",
                      "nodeType": "VariableDeclaration",
                      "scope": 1528,
                      "src": "11617:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1434,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "11617:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11584:46:2"
                },
                "returnParameters": {
                  "id": 1437,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "11640:0:2"
                },
                "scope": 1587,
                "src": "11566:819:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1552,
                  "nodeType": "Block",
                  "src": "12458:95:2",
                  "statements": [
                    {
                      "assignments": [
                        1538
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1538,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 1552,
                          "src": "12468:6:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1537,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "12468:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1542,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1539,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1530,
                          "src": "12477:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1540,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1532,
                          "src": "12481:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12477:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12468:14:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1544,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1538,
                              "src": "12500:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1545,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1530,
                              "src": "12505:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12500:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "6164646974696f6e206f766572666c6f77",
                            "id": 1547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12508:19:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                              "typeString": "literal_string \"addition overflow\""
                            },
                            "value": "addition overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                              "typeString": "literal_string \"addition overflow\""
                            }
                          ],
                          "id": 1543,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "12492:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12492:36:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1549,
                      "nodeType": "ExpressionStatement",
                      "src": "12492:36:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1550,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1538,
                        "src": "12545:1:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1536,
                      "id": 1551,
                      "nodeType": "Return",
                      "src": "12538:8:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1553,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add256",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1533,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1530,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1553,
                      "src": "12407:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1529,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12407:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1532,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1553,
                      "src": "12418:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1531,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12418:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12406:22:2"
                },
                "returnParameters": {
                  "id": 1536,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1535,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1553,
                      "src": "12452:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1534,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12452:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12451:6:2"
                },
                "scope": 1587,
                "src": "12391:162:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1573,
                  "nodeType": "Block",
                  "src": "12626:79:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1563,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1557,
                              "src": "12644:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1564,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1555,
                              "src": "12649:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12644:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "7375627472616374696f6e20756e646572666c6f77",
                            "id": 1566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12652:23:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31",
                              "typeString": "literal_string \"subtraction underflow\""
                            },
                            "value": "subtraction underflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31",
                              "typeString": "literal_string \"subtraction underflow\""
                            }
                          ],
                          "id": 1562,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "12636:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12636:40:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1568,
                      "nodeType": "ExpressionStatement",
                      "src": "12636:40:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1569,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1555,
                          "src": "12693:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1570,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1557,
                          "src": "12697:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12693:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1561,
                      "id": 1572,
                      "nodeType": "Return",
                      "src": "12686:12:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1574,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub256",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1558,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1555,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1574,
                      "src": "12575:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1554,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12575:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1557,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1574,
                      "src": "12586:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1556,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12586:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12574:22:2"
                },
                "returnParameters": {
                  "id": 1561,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1560,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1574,
                      "src": "12620:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1559,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12620:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12619:6:2"
                },
                "scope": 1587,
                "src": "12559:146:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1585,
                  "nodeType": "Block",
                  "src": "12762:95:2",
                  "statements": [
                    {
                      "assignments": [
                        1580
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1580,
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "scope": 1585,
                          "src": "12772:12:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1579,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "12772:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1581,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12772:12:2"
                    },
                    {
                      "externalReferences": [
                        {
                          "chainId": {
                            "declaration": 1580,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12805:7:2",
                            "valueSize": 1
                          }
                        }
                      ],
                      "id": 1582,
                      "nodeType": "InlineAssembly",
                      "operations": "{ chainId := chainid() }",
                      "src": "12794:33:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1583,
                        "name": "chainId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1580,
                        "src": "12843:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1578,
                      "id": 1584,
                      "nodeType": "Return",
                      "src": "12836:14:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1586,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getChainId",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1575,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "12730:2:2"
                },
                "returnParameters": {
                  "id": 1578,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1577,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1586,
                      "src": "12756:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1576,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12756:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12755:6:2"
                },
                "scope": 1587,
                "src": "12711:146:2",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              }
            ],
            "scope": 1662,
            "src": "60:12799:2"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 1651,
            "linearizedBaseContracts": [
              1651
            ],
            "name": "TimelockInterface",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "id": 1592,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "delay",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1588,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "12909:2:2"
                },
                "returnParameters": {
                  "id": 1591,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1590,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1592,
                      "src": "12935:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1589,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12935:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12934:6:2"
                },
                "scope": 1651,
                "src": "12895:46:2",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 1597,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "GRACE_PERIOD",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1593,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "12967:2:2"
                },
                "returnParameters": {
                  "id": 1596,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1595,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1597,
                      "src": "12993:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1594,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12993:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12992:6:2"
                },
                "scope": 1651,
                "src": "12946:53:2",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 1600,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "acceptAdmin",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1598,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13024:2:2"
                },
                "returnParameters": {
                  "id": 1599,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13035:0:2"
                },
                "scope": 1651,
                "src": "13004:32:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 1607,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "queuedTransactions",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1603,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1602,
                      "name": "hash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1607,
                      "src": "13069:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1601,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13069:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13068:14:2"
                },
                "returnParameters": {
                  "id": 1606,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1605,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1607,
                      "src": "13106:4:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1604,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "13106:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13105:6:2"
                },
                "scope": 1651,
                "src": "13041:71:2",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 1622,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "queueTransaction",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1618,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1609,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 1622,
                      "src": "13143:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1608,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13143:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1611,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1622,
                      "src": "13159:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1610,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13159:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1613,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 1622,
                      "src": "13171:25:2",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1612,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "13171:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1615,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 1622,
                      "src": "13198:19:2",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1614,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13198:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1617,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 1622,
                      "src": "13219:8:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1616,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13219:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13142:86:2"
                },
                "returnParameters": {
                  "id": 1621,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1620,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1622,
                      "src": "13247:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1619,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13247:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13246:9:2"
                },
                "scope": 1651,
                "src": "13117:139:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 1635,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "cancelTransaction",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1633,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1624,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 1635,
                      "src": "13288:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1623,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13288:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1626,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1635,
                      "src": "13304:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1625,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13304:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1628,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 1635,
                      "src": "13316:25:2",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1627,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "13316:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1630,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 1635,
                      "src": "13343:19:2",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1629,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13343:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1632,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 1635,
                      "src": "13364:8:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1631,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13364:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13287:86:2"
                },
                "returnParameters": {
                  "id": 1634,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13382:0:2"
                },
                "scope": 1651,
                "src": "13261:122:2",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 1650,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "executeTransaction",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1646,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1637,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 1650,
                      "src": "13416:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1636,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13416:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1639,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1650,
                      "src": "13432:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1638,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13432:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1641,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 1650,
                      "src": "13444:25:2",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1640,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "13444:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1643,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 1650,
                      "src": "13471:19:2",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1642,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13471:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1645,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 1650,
                      "src": "13492:8:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1644,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13492:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13415:86:2"
                },
                "returnParameters": {
                  "id": 1649,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1648,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1650,
                      "src": "13528:12:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1647,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13528:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13527:14:2"
                },
                "scope": 1651,
                "src": "13388:154:2",
                "stateMutability": "payable",
                "superFunction": null,
                "visibility": "external"
              }
            ],
            "scope": 1662,
            "src": "12861:683:2"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 1661,
            "linearizedBaseContracts": [
              1661
            ],
            "name": "UniInterface",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "id": 1660,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPriorVotes",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1656,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1653,
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 1660,
                      "src": "13598:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1652,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13598:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1655,
                      "name": "blockNumber",
                      "nodeType": "VariableDeclaration",
                      "scope": 1660,
                      "src": "13615:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1654,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13615:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13597:35:2"
                },
                "returnParameters": {
                  "id": 1659,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1658,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1660,
                      "src": "13656:6:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 1657,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "13656:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13655:8:2"
                },
                "scope": 1661,
                "src": "13575:89:2",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              }
            ],
            "scope": 1662,
            "src": "13546:120:2"
          }
        ],
        "src": "0:13666:2"
      }
    },
    "contracts/SafeMath.sol": {
      "id": 3,
      "AST": {
        "absolutePath": "contracts/SafeMath.sol",
        "exportedSymbols": {
          "SafeMath": [
            1911
          ]
        },
        "id": 1912,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1663,
            "literals": [
              "solidity",
              "^",
              "0.5",
              ".16"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:3"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": "@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.",
            "fullyImplemented": true,
            "id": 1911,
            "linearizedBaseContracts": [
              1911
            ],
            "name": "SafeMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1687,
                  "nodeType": "Block",
                  "src": "1026:109:3",
                  "statements": [
                    {
                      "assignments": [
                        1673
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1673,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 1687,
                          "src": "1036:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1672,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1036:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1677,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1674,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1665,
                          "src": "1048:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1675,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1667,
                          "src": "1052:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1048:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1036:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1679,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1673,
                              "src": "1071:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1680,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1665,
                              "src": "1076:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1071:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77",
                            "id": 1682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1079:29:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                              "typeString": "literal_string \"SafeMath: addition overflow\""
                            },
                            "value": "SafeMath: addition overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                              "typeString": "literal_string \"SafeMath: addition overflow\""
                            }
                          ],
                          "id": 1678,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1063:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1063:46:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1684,
                      "nodeType": "ExpressionStatement",
                      "src": "1063:46:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1685,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1673,
                        "src": "1127:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1671,
                      "id": 1686,
                      "nodeType": "Return",
                      "src": "1120:8:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the addition of two unsigned integers, reverting on overflow.\n     * Counterpart to Solidity's `+` operator.\n     * Requirements:\n- Addition cannot overflow.",
                "id": 1688,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1668,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1665,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1688,
                      "src": "972:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1664,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "972:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1667,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1688,
                      "src": "983:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1666,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "983:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "971:22:3"
                },
                "returnParameters": {
                  "id": 1671,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1670,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1688,
                      "src": "1017:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1669,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1017:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1016:9:3"
                },
                "scope": 1911,
                "src": "959:176:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1714,
                  "nodeType": "Block",
                  "src": "1471:92:3",
                  "statements": [
                    {
                      "assignments": [
                        1700
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1700,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 1714,
                          "src": "1481:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1699,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1481:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1704,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1701,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1690,
                          "src": "1493:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1702,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1692,
                          "src": "1497:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1493:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1481:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1706,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1700,
                              "src": "1516:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1707,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1690,
                              "src": "1521:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1516:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1709,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1694,
                            "src": "1524:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1705,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1508:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1508:29:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1711,
                      "nodeType": "ExpressionStatement",
                      "src": "1508:29:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1712,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1700,
                        "src": "1555:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1698,
                      "id": 1713,
                      "nodeType": "Return",
                      "src": "1548:8:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the addition of two unsigned integers, reverting with custom message on overflow.\n     * Counterpart to Solidity's `+` operator.\n     * Requirements:\n- Addition cannot overflow.",
                "id": 1715,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1695,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1690,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1715,
                      "src": "1389:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1689,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1389:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1692,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1715,
                      "src": "1400:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1691,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1400:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1694,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 1715,
                      "src": "1411:26:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1693,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1411:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1388:50:3"
                },
                "returnParameters": {
                  "id": 1698,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1697,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1715,
                      "src": "1462:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1696,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1462:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1461:9:3"
                },
                "scope": 1911,
                "src": "1376:187:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1730,
                  "nodeType": "Block",
                  "src": "1889:68:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1725,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1717,
                            "src": "1910:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1726,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1719,
                            "src": "1913:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a207375627472616374696f6e20756e646572666c6f77",
                            "id": 1727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1916:33:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1caebeb8fec78d96e2107fd22e0abe38fcab72034848d9a80a8de2a86ac41d40",
                              "typeString": "literal_string \"SafeMath: subtraction underflow\""
                            },
                            "value": "SafeMath: subtraction underflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1caebeb8fec78d96e2107fd22e0abe38fcab72034848d9a80a8de2a86ac41d40",
                              "typeString": "literal_string \"SafeMath: subtraction underflow\""
                            }
                          ],
                          "id": 1724,
                          "name": "sub",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1731,
                            1758
                          ],
                          "referencedDeclaration": 1758,
                          "src": "1906:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                          }
                        },
                        "id": 1728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1906:44:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1723,
                      "id": 1729,
                      "nodeType": "Return",
                      "src": "1899:51:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).\n     * Counterpart to Solidity's `-` operator.\n     * Requirements:\n- Subtraction cannot underflow.",
                "id": 1731,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1720,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1717,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1731,
                      "src": "1835:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1716,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1835:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1719,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1731,
                      "src": "1846:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1718,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1846:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1834:22:3"
                },
                "returnParameters": {
                  "id": 1723,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1722,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1731,
                      "src": "1880:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1721,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1880:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1879:9:3"
                },
                "scope": 1911,
                "src": "1822:135:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1757,
                  "nodeType": "Block",
                  "src": "2331:92:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1743,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1735,
                              "src": "2349:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1744,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1733,
                              "src": "2354:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2349:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1746,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1737,
                            "src": "2357:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1742,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "2341:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2341:29:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1748,
                      "nodeType": "ExpressionStatement",
                      "src": "2341:29:3"
                    },
                    {
                      "assignments": [
                        1750
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1750,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 1757,
                          "src": "2380:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1749,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2380:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1754,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1751,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1733,
                          "src": "2392:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1752,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1735,
                          "src": "2396:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2392:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2380:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1755,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1750,
                        "src": "2415:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1741,
                      "id": 1756,
                      "nodeType": "Return",
                      "src": "2408:8:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).\n     * Counterpart to Solidity's `-` operator.\n     * Requirements:\n- Subtraction cannot underflow.",
                "id": 1758,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1738,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1733,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1758,
                      "src": "2249:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1732,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2249:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1735,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1758,
                      "src": "2260:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1734,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2260:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1737,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 1758,
                      "src": "2271:26:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1736,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2271:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2248:50:3"
                },
                "returnParameters": {
                  "id": 1741,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1740,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1758,
                      "src": "2322:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1739,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2322:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2321:9:3"
                },
                "scope": 1911,
                "src": "2236:187:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1791,
                  "nodeType": "Block",
                  "src": "2723:392:3",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1767,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1760,
                          "src": "2955:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2960:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2955:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1773,
                      "nodeType": "IfStatement",
                      "src": "2951:45:3",
                      "trueBody": {
                        "id": 1772,
                        "nodeType": "Block",
                        "src": "2963:33:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2984:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "functionReturnParameters": 1766,
                            "id": 1771,
                            "nodeType": "Return",
                            "src": "2977:8:3"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        1775
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1775,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 1791,
                          "src": "3006:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1774,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3006:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1779,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1776,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1760,
                          "src": "3018:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1777,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1762,
                          "src": "3022:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3018:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3006:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1785,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1781,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1775,
                                "src": "3041:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1782,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1760,
                                "src": "3045:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3041:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1784,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "3050:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3041:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                            "id": 1786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3053:35:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                              "typeString": "literal_string \"SafeMath: multiplication overflow\""
                            },
                            "value": "SafeMath: multiplication overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                              "typeString": "literal_string \"SafeMath: multiplication overflow\""
                            }
                          ],
                          "id": 1780,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "3033:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3033:56:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1788,
                      "nodeType": "ExpressionStatement",
                      "src": "3033:56:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1789,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1775,
                        "src": "3107:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1766,
                      "id": 1790,
                      "nodeType": "Return",
                      "src": "3100:8:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on overflow.\n     * Counterpart to Solidity's `*` operator.\n     * Requirements:\n- Multiplication cannot overflow.",
                "id": 1792,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1763,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1760,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1792,
                      "src": "2669:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1759,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2669:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1762,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1792,
                      "src": "2680:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1761,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2680:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2668:22:3"
                },
                "returnParameters": {
                  "id": 1766,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1765,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1792,
                      "src": "2714:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1764,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2714:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2713:9:3"
                },
                "scope": 1911,
                "src": "2656:459:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1827,
                  "nodeType": "Block",
                  "src": "3443:369:3",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1803,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1794,
                          "src": "3675:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3680:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3675:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1809,
                      "nodeType": "IfStatement",
                      "src": "3671:45:3",
                      "trueBody": {
                        "id": 1808,
                        "nodeType": "Block",
                        "src": "3683:33:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3704:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "functionReturnParameters": 1802,
                            "id": 1807,
                            "nodeType": "Return",
                            "src": "3697:8:3"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        1811
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1811,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 1827,
                          "src": "3726:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1810,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3726:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1815,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1814,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1812,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1794,
                          "src": "3738:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1813,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1796,
                          "src": "3742:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3738:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3726:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1817,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1811,
                                "src": "3761:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1818,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1794,
                                "src": "3765:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3761:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1820,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1796,
                              "src": "3770:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3761:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1822,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1798,
                            "src": "3773:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1816,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "3753:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1823,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3753:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1824,
                      "nodeType": "ExpressionStatement",
                      "src": "3753:33:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1825,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1811,
                        "src": "3804:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1802,
                      "id": 1826,
                      "nodeType": "Return",
                      "src": "3797:8:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on overflow.\n     * Counterpart to Solidity's `*` operator.\n     * Requirements:\n- Multiplication cannot overflow.",
                "id": 1828,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1799,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1794,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1828,
                      "src": "3361:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1793,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3361:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1796,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1828,
                      "src": "3372:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1795,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3372:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1798,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 1828,
                      "src": "3383:26:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1797,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3383:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3360:50:3"
                },
                "returnParameters": {
                  "id": 1802,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1801,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1828,
                      "src": "3434:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1800,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3434:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3433:9:3"
                },
                "scope": 1911,
                "src": "3348:464:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1843,
                  "nodeType": "Block",
                  "src": "4334:63:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1838,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1830,
                            "src": "4355:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1839,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1832,
                            "src": "4358:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f",
                            "id": 1840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4361:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                              "typeString": "literal_string \"SafeMath: division by zero\""
                            },
                            "value": "SafeMath: division by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                              "typeString": "literal_string \"SafeMath: division by zero\""
                            }
                          ],
                          "id": 1837,
                          "name": "div",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1844,
                            1871
                          ],
                          "referencedDeclaration": 1871,
                          "src": "4351:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                          }
                        },
                        "id": 1841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4351:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1836,
                      "id": 1842,
                      "nodeType": "Return",
                      "src": "4344:46:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the integer division of two unsigned integers.\nReverts on division by zero. The result is rounded towards zero.\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.",
                "id": 1844,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "div",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1833,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1830,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1844,
                      "src": "4280:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1829,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4280:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1832,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1844,
                      "src": "4291:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1831,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4291:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4279:22:3"
                },
                "returnParameters": {
                  "id": 1836,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1835,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1844,
                      "src": "4325:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1834,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4325:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4324:9:3"
                },
                "scope": 1911,
                "src": "4267:130:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1870,
                  "nodeType": "Block",
                  "src": "4967:243:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1856,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1848,
                              "src": "5051:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5055:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5051:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1859,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1850,
                            "src": "5058:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1855,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "5043:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5043:28:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1861,
                      "nodeType": "ExpressionStatement",
                      "src": "5043:28:3"
                    },
                    {
                      "assignments": [
                        1863
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1863,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 1870,
                          "src": "5081:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1862,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5081:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1867,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1864,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1846,
                          "src": "5093:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1865,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1848,
                          "src": "5097:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5093:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5081:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1868,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1863,
                        "src": "5202:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1854,
                      "id": 1869,
                      "nodeType": "Return",
                      "src": "5195:8:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the integer division of two unsigned integers.\nReverts with custom message on division by zero. The result is rounded towards zero.\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.",
                "id": 1871,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "div",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1851,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1846,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1871,
                      "src": "4885:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1845,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4885:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1848,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1871,
                      "src": "4896:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1847,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4896:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1850,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 1871,
                      "src": "4907:26:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1849,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "4907:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4884:50:3"
                },
                "returnParameters": {
                  "id": 1854,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1853,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1871,
                      "src": "4958:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1852,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4958:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4957:9:3"
                },
                "scope": 1911,
                "src": "4872:338:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1886,
                  "nodeType": "Block",
                  "src": "5721:61:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1881,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1873,
                            "src": "5742:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1882,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1875,
                            "src": "5745:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f",
                            "id": 1883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5748:26:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                              "typeString": "literal_string \"SafeMath: modulo by zero\""
                            },
                            "value": "SafeMath: modulo by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                              "typeString": "literal_string \"SafeMath: modulo by zero\""
                            }
                          ],
                          "id": 1880,
                          "name": "mod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1887,
                            1910
                          ],
                          "referencedDeclaration": 1910,
                          "src": "5738:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                          }
                        },
                        "id": 1884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5738:37:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1879,
                      "id": 1885,
                      "nodeType": "Return",
                      "src": "5731:44:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.",
                "id": 1887,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mod",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1876,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1873,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1887,
                      "src": "5667:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1872,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5667:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1875,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1887,
                      "src": "5678:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1874,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5678:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5666:22:3"
                },
                "returnParameters": {
                  "id": 1879,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1878,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1887,
                      "src": "5712:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1877,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5712:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5711:9:3"
                },
                "scope": 1911,
                "src": "5654:128:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1909,
                  "nodeType": "Block",
                  "src": "6341:68:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1899,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1891,
                              "src": "6359:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6364:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6359:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1902,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1893,
                            "src": "6367:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1898,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "6351:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6351:29:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1904,
                      "nodeType": "ExpressionStatement",
                      "src": "6351:29:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1905,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1889,
                          "src": "6397:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "%",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1906,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1891,
                          "src": "6401:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6397:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1897,
                      "id": 1908,
                      "nodeType": "Return",
                      "src": "6390:12:3"
                    }
                  ]
                },
                "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.",
                "id": 1910,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mod",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1894,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1889,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 1910,
                      "src": "6259:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1888,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6259:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1891,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 1910,
                      "src": "6270:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1890,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6270:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1893,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 1910,
                      "src": "6281:26:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1892,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "6281:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6258:50:3"
                },
                "returnParameters": {
                  "id": 1897,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1896,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 1910,
                      "src": "6332:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1895,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6332:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6331:9:3"
                },
                "scope": 1911,
                "src": "6246:163:3",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              }
            ],
            "scope": 1912,
            "src": "721:5690:3"
          }
        ],
        "src": "0:6411:3"
      }
    },
    "contracts/Timelock.sol": {
      "id": 4,
      "AST": {
        "absolutePath": "contracts/Timelock.sol",
        "exportedSymbols": {
          "Timelock": [
            2365
          ]
        },
        "id": 2366,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1913,
            "literals": [
              "solidity",
              "^",
              "0.5",
              ".16"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:4"
          },
          {
            "absolutePath": "contracts/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 1914,
            "nodeType": "ImportDirective",
            "scope": 2366,
            "sourceUnit": 1912,
            "src": "26:24:4",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2365,
            "linearizedBaseContracts": [
              2365
            ],
            "name": "Timelock",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 1917,
                "libraryName": {
                  "contractScope": null,
                  "id": 1915,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1911,
                  "src": "82:8:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$1911",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "76:24:4",
                "typeName": {
                  "id": 1916,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "95:4:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1921,
                "name": "NewAdmin",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1920,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1919,
                      "indexed": true,
                      "name": "newAdmin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1921,
                      "src": "121:24:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1918,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "121:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "120:26:4"
                },
                "src": "106:41:4"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1925,
                "name": "NewPendingAdmin",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1924,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1923,
                      "indexed": true,
                      "name": "newPendingAdmin",
                      "nodeType": "VariableDeclaration",
                      "scope": 1925,
                      "src": "174:31:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1922,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "174:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "173:33:4"
                },
                "src": "152:55:4"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1929,
                "name": "NewDelay",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1928,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1927,
                      "indexed": true,
                      "name": "newDelay",
                      "nodeType": "VariableDeclaration",
                      "scope": 1929,
                      "src": "227:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1926,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "227:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "226:23:4"
                },
                "src": "212:38:4"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1943,
                "name": "CancelTransaction",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1942,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1931,
                      "indexed": true,
                      "name": "txHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1943,
                      "src": "279:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1930,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "279:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1933,
                      "indexed": true,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 1943,
                      "src": "303:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1932,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "303:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1935,
                      "indexed": false,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1943,
                      "src": "327:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1934,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "327:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1937,
                      "indexed": false,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 1943,
                      "src": "339:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1936,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "339:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1939,
                      "indexed": false,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 1943,
                      "src": "358:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1938,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "358:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1941,
                      "indexed": false,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 1943,
                      "src": "370:8:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1940,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "370:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "278:101:4"
                },
                "src": "255:125:4"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1957,
                "name": "ExecuteTransaction",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1956,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1945,
                      "indexed": true,
                      "name": "txHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1957,
                      "src": "410:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1944,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "410:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1947,
                      "indexed": true,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 1957,
                      "src": "434:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1946,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "434:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1949,
                      "indexed": false,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1957,
                      "src": "458:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1948,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "458:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1951,
                      "indexed": false,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 1957,
                      "src": "470:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1950,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "470:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1953,
                      "indexed": false,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 1957,
                      "src": "489:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1952,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "489:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1955,
                      "indexed": false,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 1957,
                      "src": "501:8:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1954,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "501:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "409:101:4"
                },
                "src": "385:126:4"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1971,
                "name": "QueueTransaction",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1970,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1959,
                      "indexed": true,
                      "name": "txHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1971,
                      "src": "539:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1958,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "539:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1961,
                      "indexed": true,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 1971,
                      "src": "563:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1960,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "563:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1963,
                      "indexed": false,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 1971,
                      "src": "587:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1962,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "587:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1965,
                      "indexed": false,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 1971,
                      "src": "599:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1964,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "599:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1967,
                      "indexed": false,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 1971,
                      "src": "617:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1966,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "617:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1969,
                      "indexed": false,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 1971,
                      "src": "629:8:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1968,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "629:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "538:100:4"
                },
                "src": "516:123:4"
              },
              {
                "constant": true,
                "id": 1974,
                "name": "GRACE_PERIOD",
                "nodeType": "VariableDeclaration",
                "scope": 2365,
                "src": "645:43:4",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1972,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "645:4:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3134",
                  "id": 1973,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "681:7:4",
                  "subdenomination": "days",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1209600_by_1",
                    "typeString": "int_const 1209600"
                  },
                  "value": "14"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 1977,
                "name": "MINIMUM_DELAY",
                "nodeType": "VariableDeclaration",
                "scope": 2365,
                "src": "694:43:4",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1975,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "694:4:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "32",
                  "id": 1976,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "731:6:4",
                  "subdenomination": "days",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_172800_by_1",
                    "typeString": "int_const 172800"
                  },
                  "value": "2"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 1980,
                "name": "MAXIMUM_DELAY",
                "nodeType": "VariableDeclaration",
                "scope": 2365,
                "src": "743:44:4",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1978,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "743:4:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3330",
                  "id": 1979,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "780:7:4",
                  "subdenomination": "days",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_2592000_by_1",
                    "typeString": "int_const 2592000"
                  },
                  "value": "30"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 1982,
                "name": "admin",
                "nodeType": "VariableDeclaration",
                "scope": 2365,
                "src": "794:20:4",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1981,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "794:7:4",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 1984,
                "name": "pendingAdmin",
                "nodeType": "VariableDeclaration",
                "scope": 2365,
                "src": "820:27:4",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1983,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "820:7:4",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 1986,
                "name": "delay",
                "nodeType": "VariableDeclaration",
                "scope": 2365,
                "src": "853:17:4",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1985,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "853:4:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 1990,
                "name": "queuedTransactions",
                "nodeType": "VariableDeclaration",
                "scope": 2365,
                "src": "877:51:4",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                  "typeString": "mapping(bytes32 => bool)"
                },
                "typeName": {
                  "id": 1989,
                  "keyType": {
                    "id": 1987,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "886:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "877:25:4",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                    "typeString": "mapping(bytes32 => bool)"
                  },
                  "valueType": {
                    "id": 1988,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "897:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2019,
                  "nodeType": "Block",
                  "src": "984:259:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1998,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1994,
                              "src": "1002:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1999,
                              "name": "MINIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1977,
                              "src": "1012:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1002:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
                            "id": 2001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1027:57:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f",
                              "typeString": "literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""
                            },
                            "value": "Timelock::constructor: Delay must exceed minimum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f",
                              "typeString": "literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""
                            }
                          ],
                          "id": 1997,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "994:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "994:91:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2003,
                      "nodeType": "ExpressionStatement",
                      "src": "994:91:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2005,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1994,
                              "src": "1103:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2006,
                              "name": "MAXIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1980,
                              "src": "1113:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1103:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
                            "id": 2008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1128:58:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                            },
                            "value": "Timelock::setDelay: Delay must not exceed maximum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                            }
                          ],
                          "id": 2004,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1095:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1095:92:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2010,
                      "nodeType": "ExpressionStatement",
                      "src": "1095:92:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2011,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1982,
                          "src": "1198:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2012,
                          "name": "admin_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1992,
                          "src": "1206:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1198:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2014,
                      "nodeType": "ExpressionStatement",
                      "src": "1198:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2015,
                          "name": "delay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1986,
                          "src": "1222:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2016,
                          "name": "delay_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1994,
                          "src": "1230:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1222:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2018,
                      "nodeType": "ExpressionStatement",
                      "src": "1222:14:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2020,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 1995,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1992,
                      "name": "admin_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2020,
                      "src": "948:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1991,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "948:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1994,
                      "name": "delay_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2020,
                      "src": "964:11:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1993,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "964:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "947:29:4"
                },
                "returnParameters": {
                  "id": 1996,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "984:0:4"
                },
                "scope": 2365,
                "src": "936:307:4",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2023,
                  "nodeType": "Block",
                  "src": "1277:3:4",
                  "statements": []
                },
                "documentation": null,
                "id": 2024,
                "implemented": true,
                "kind": "fallback",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2021,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1257:2:4"
                },
                "returnParameters": {
                  "id": 2022,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1277:0:4"
                },
                "scope": 2365,
                "src": "1249:31:4",
                "stateMutability": "payable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2061,
                  "nodeType": "Block",
                  "src": "1324:361:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 2035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2030,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "1342:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1342:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2033,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3867,
                                  "src": "1364:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Timelock_$2365",
                                    "typeString": "contract Timelock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Timelock_$2365",
                                    "typeString": "contract Timelock"
                                  }
                                ],
                                "id": 2032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1356:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1356:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1342:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e",
                            "id": 2036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1371:51:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d",
                              "typeString": "literal_string \"Timelock::setDelay: Call must come from Timelock.\""
                            },
                            "value": "Timelock::setDelay: Call must come from Timelock."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d",
                              "typeString": "literal_string \"Timelock::setDelay: Call must come from Timelock.\""
                            }
                          ],
                          "id": 2029,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1334:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2037,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1334:89:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2038,
                      "nodeType": "ExpressionStatement",
                      "src": "1334:89:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2040,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2026,
                              "src": "1441:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2041,
                              "name": "MINIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1977,
                              "src": "1451:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1441:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
                            "id": 2043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1466:54:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""
                            },
                            "value": "Timelock::setDelay: Delay must exceed minimum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""
                            }
                          ],
                          "id": 2039,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1433:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1433:88:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2045,
                      "nodeType": "ExpressionStatement",
                      "src": "1433:88:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2047,
                              "name": "delay_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2026,
                              "src": "1539:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2048,
                              "name": "MAXIMUM_DELAY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1980,
                              "src": "1549:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1539:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
                            "id": 2050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1564:58:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                            },
                            "value": "Timelock::setDelay: Delay must not exceed maximum delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                              "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                            }
                          ],
                          "id": 2046,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1531:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1531:92:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2052,
                      "nodeType": "ExpressionStatement",
                      "src": "1531:92:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2053,
                          "name": "delay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1986,
                          "src": "1633:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2054,
                          "name": "delay_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2026,
                          "src": "1641:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1633:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2056,
                      "nodeType": "ExpressionStatement",
                      "src": "1633:14:4"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2058,
                            "name": "delay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1986,
                            "src": "1672:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2057,
                          "name": "NewDelay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1929,
                          "src": "1663:8:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 2059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1663:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2060,
                      "nodeType": "EmitStatement",
                      "src": "1658:20:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2062,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setDelay",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2027,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2026,
                      "name": "delay_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2062,
                      "src": "1304:11:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2025,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1304:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1303:13:4"
                },
                "returnParameters": {
                  "id": 2028,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1324:0:4"
                },
                "scope": 2365,
                "src": "1286:399:4",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2088,
                  "nodeType": "Block",
                  "src": "1721:206:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2066,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "1739:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1739:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2068,
                              "name": "pendingAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1984,
                              "src": "1753:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1739:26:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e",
                            "id": 2070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1767:58:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3",
                              "typeString": "literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""
                            },
                            "value": "Timelock::acceptAdmin: Call must come from pendingAdmin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3",
                              "typeString": "literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""
                            }
                          ],
                          "id": 2065,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1731:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1731:95:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2072,
                      "nodeType": "ExpressionStatement",
                      "src": "1731:95:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2073,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1982,
                          "src": "1836:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2074,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "1844:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1844:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1836:18:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2077,
                      "nodeType": "ExpressionStatement",
                      "src": "1836:18:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2078,
                          "name": "pendingAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1984,
                          "src": "1864:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1887:1:4",
                              "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": 2079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1879:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 2081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1879:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1864:25:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2083,
                      "nodeType": "ExpressionStatement",
                      "src": "1864:25:4"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2085,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1982,
                            "src": "1914:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2084,
                          "name": "NewAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1921,
                          "src": "1905:8:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1905:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2087,
                      "nodeType": "EmitStatement",
                      "src": "1900:20:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2089,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "acceptAdmin",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2063,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1711:2:4"
                },
                "returnParameters": {
                  "id": 2064,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1721:0:4"
                },
                "scope": 2365,
                "src": "1691:236:4",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2112,
                  "nodeType": "Block",
                  "src": "1988:196:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 2100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2095,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "2006:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2006:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2098,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3867,
                                  "src": "2028:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Timelock_$2365",
                                    "typeString": "contract Timelock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Timelock_$2365",
                                    "typeString": "contract Timelock"
                                  }
                                ],
                                "id": 2097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2020:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2020:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "2006:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e",
                            "id": 2101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2035:58:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815",
                              "typeString": "literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""
                            },
                            "value": "Timelock::setPendingAdmin: Call must come from Timelock."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815",
                              "typeString": "literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""
                            }
                          ],
                          "id": 2094,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1998:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1998:96:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2103,
                      "nodeType": "ExpressionStatement",
                      "src": "1998:96:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2104,
                          "name": "pendingAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1984,
                          "src": "2104:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2105,
                          "name": "pendingAdmin_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2091,
                          "src": "2119:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2104:28:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2107,
                      "nodeType": "ExpressionStatement",
                      "src": "2104:28:4"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2109,
                            "name": "pendingAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1984,
                            "src": "2164:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2108,
                          "name": "NewPendingAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1925,
                          "src": "2148:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                            "typeString": "function (address)"
                          }
                        },
                        "id": 2110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2148:29:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2111,
                      "nodeType": "EmitStatement",
                      "src": "2143:34:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2113,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setPendingAdmin",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2092,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2091,
                      "name": "pendingAdmin_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2113,
                      "src": "1958:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2090,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1958:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1957:23:4"
                },
                "returnParameters": {
                  "id": 2093,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1988:0:4"
                },
                "scope": 2365,
                "src": "1933:251:4",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2177,
                  "nodeType": "Block",
                  "src": "2323:465:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2129,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "2341:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2341:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2131,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1982,
                              "src": "2355:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2341:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                            "id": 2133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2362:56:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749",
                              "typeString": "literal_string \"Timelock::queueTransaction: Call must come from admin.\""
                            },
                            "value": "Timelock::queueTransaction: Call must come from admin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749",
                              "typeString": "literal_string \"Timelock::queueTransaction: Call must come from admin.\""
                            }
                          ],
                          "id": 2128,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "2333:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2333:86:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2135,
                      "nodeType": "ExpressionStatement",
                      "src": "2333:86:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2137,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2123,
                              "src": "2437:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2141,
                                  "name": "delay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1986,
                                  "src": "2468:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 2138,
                                    "name": "getBlockTimestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2364,
                                    "src": "2444:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 2139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2444:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1688,
                                "src": "2444:23:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2444:30:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2437:37:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e",
                            "id": 2144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2476:75:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c",
                              "typeString": "literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""
                            },
                            "value": "Timelock::queueTransaction: Estimated execution block must satisfy delay."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c",
                              "typeString": "literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""
                            }
                          ],
                          "id": 2136,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "2429:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2145,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2429:123:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2146,
                      "nodeType": "ExpressionStatement",
                      "src": "2429:123:4"
                    },
                    {
                      "assignments": [
                        2148
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2148,
                          "name": "txHash",
                          "nodeType": "VariableDeclaration",
                          "scope": 2177,
                          "src": "2563:14:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 2147,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "2563:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2159,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2152,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2115,
                                "src": "2601:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2153,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2117,
                                "src": "2609:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2154,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2119,
                                "src": "2616:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2155,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2121,
                                "src": "2627:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2156,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2123,
                                "src": "2633:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2150,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "2590:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2590:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2590:47:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2149,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "2580:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2580:58:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2563:75:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2160,
                            "name": "queuedTransactions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1990,
                            "src": "2648:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                              "typeString": "mapping(bytes32 => bool)"
                            }
                          },
                          "id": 2162,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2161,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2148,
                            "src": "2667:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2648:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2677:4:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "2648:33:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2165,
                      "nodeType": "ExpressionStatement",
                      "src": "2648:33:4"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2167,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2148,
                            "src": "2714:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2168,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2115,
                            "src": "2722:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2169,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2117,
                            "src": "2730:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2170,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2119,
                            "src": "2737:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2171,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2121,
                            "src": "2748:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2172,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2123,
                            "src": "2754:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2166,
                          "name": "QueueTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1971,
                          "src": "2697:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                            "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                          }
                        },
                        "id": 2173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2697:61:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2174,
                      "nodeType": "EmitStatement",
                      "src": "2692:66:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2175,
                        "name": "txHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2148,
                        "src": "2775:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "functionReturnParameters": 2127,
                      "id": 2176,
                      "nodeType": "Return",
                      "src": "2768:13:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2178,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "queueTransaction",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2124,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2115,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "2216:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2114,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2216:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2117,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "2232:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2116,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2232:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2119,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "2244:23:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2118,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2244:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2121,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "2269:17:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2120,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2269:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2123,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "2288:8:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2122,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2288:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2215:82:4"
                },
                "returnParameters": {
                  "id": 2127,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2126,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "2314:7:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2125,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2314:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2313:9:4"
                },
                "scope": 2365,
                "src": "2190:598:4",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2227,
                  "nodeType": "Block",
                  "src": "2910:312:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2192,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "2928:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2928:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2194,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1982,
                              "src": "2942:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2928:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                            "id": 2196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2949:57:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d",
                              "typeString": "literal_string \"Timelock::cancelTransaction: Call must come from admin.\""
                            },
                            "value": "Timelock::cancelTransaction: Call must come from admin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d",
                              "typeString": "literal_string \"Timelock::cancelTransaction: Call must come from admin.\""
                            }
                          ],
                          "id": 2191,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "2920:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2920:87:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2198,
                      "nodeType": "ExpressionStatement",
                      "src": "2920:87:4"
                    },
                    {
                      "assignments": [
                        2200
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2200,
                          "name": "txHash",
                          "nodeType": "VariableDeclaration",
                          "scope": 2227,
                          "src": "3018:14:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 2199,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3018:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2211,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2204,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2180,
                                "src": "3056:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2205,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2182,
                                "src": "3064:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2206,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2184,
                                "src": "3071:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2207,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2186,
                                "src": "3082:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2208,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2188,
                                "src": "3088:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2202,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "3045:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3045:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3045:47:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2201,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "3035:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2210,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3035:58:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3018:75:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2212,
                            "name": "queuedTransactions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1990,
                            "src": "3103:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                              "typeString": "mapping(bytes32 => bool)"
                            }
                          },
                          "id": 2214,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2213,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2200,
                            "src": "3122:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "3103:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3132:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "3103:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2217,
                      "nodeType": "ExpressionStatement",
                      "src": "3103:34:4"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2219,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2200,
                            "src": "3171:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2220,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2180,
                            "src": "3179:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2221,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2182,
                            "src": "3187:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2222,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2184,
                            "src": "3194:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2223,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2186,
                            "src": "3205:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2224,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2188,
                            "src": "3211:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2218,
                          "name": "CancelTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1943,
                          "src": "3153:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                            "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                          }
                        },
                        "id": 2225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3153:62:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2226,
                      "nodeType": "EmitStatement",
                      "src": "3148:67:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2228,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "cancelTransaction",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2189,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2180,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 2228,
                      "src": "2821:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2179,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2821:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2182,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 2228,
                      "src": "2837:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2181,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2837:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2184,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 2228,
                      "src": "2849:23:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2183,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2849:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2186,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 2228,
                      "src": "2874:17:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2185,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2874:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2188,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 2228,
                      "src": "2893:8:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2187,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2893:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2820:82:4"
                },
                "returnParameters": {
                  "id": 2190,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2910:0:4"
                },
                "scope": 2365,
                "src": "2794:428:4",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2354,
                  "nodeType": "Block",
                  "src": "3376:1143:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2244,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "3394:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3394:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2246,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1982,
                              "src": "3408:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3394:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                            "id": 2248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3415:58:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947",
                              "typeString": "literal_string \"Timelock::executeTransaction: Call must come from admin.\""
                            },
                            "value": "Timelock::executeTransaction: Call must come from admin."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947",
                              "typeString": "literal_string \"Timelock::executeTransaction: Call must come from admin.\""
                            }
                          ],
                          "id": 2243,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "3386:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3386:88:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2250,
                      "nodeType": "ExpressionStatement",
                      "src": "3386:88:4"
                    },
                    {
                      "assignments": [
                        2252
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2252,
                          "name": "txHash",
                          "nodeType": "VariableDeclaration",
                          "scope": 2354,
                          "src": "3485:14:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 2251,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3485:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2263,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2256,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2230,
                                "src": "3523:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2257,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2232,
                                "src": "3531:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2258,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2234,
                                "src": "3538:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2259,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2236,
                                "src": "3549:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2260,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2238,
                                "src": "3555:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2254,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "3512:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3512:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3512:47:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2253,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "3502:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3502:58:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3485:75:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2265,
                              "name": "queuedTransactions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1990,
                              "src": "3578:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 2267,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2266,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "3597:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3578:26:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e",
                            "id": 2268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3606:63:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction hasn't been queued."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""
                            }
                          ],
                          "id": 2264,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "3570:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3570:100:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2270,
                      "nodeType": "ExpressionStatement",
                      "src": "3570:100:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2272,
                                "name": "getBlockTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2364,
                                "src": "3688:17:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 2273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3688:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2274,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "3711:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3688:26:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e",
                            "id": 2276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3716:71:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction hasn't surpassed time lock."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""
                            }
                          ],
                          "id": 2271,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "3680:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3680:108:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2278,
                      "nodeType": "ExpressionStatement",
                      "src": "3680:108:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2280,
                                "name": "getBlockTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2364,
                                "src": "3806:17:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 2281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3806:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2284,
                                  "name": "GRACE_PERIOD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1974,
                                  "src": "3837:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2282,
                                  "name": "eta",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2238,
                                  "src": "3829:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1688,
                                "src": "3829:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3829:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3806:44:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e",
                            "id": 2287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3852:53:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction is stale.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction is stale."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction is stale.\""
                            }
                          ],
                          "id": 2279,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "3798:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3798:108:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2289,
                      "nodeType": "ExpressionStatement",
                      "src": "3798:108:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2290,
                            "name": "queuedTransactions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1990,
                            "src": "3917:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                              "typeString": "mapping(bytes32 => bool)"
                            }
                          },
                          "id": 2292,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2291,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2252,
                            "src": "3936:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "3917:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3946:5:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "3917:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2295,
                      "nodeType": "ExpressionStatement",
                      "src": "3917:34:4"
                    },
                    {
                      "assignments": [
                        2297
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2297,
                          "name": "callData",
                          "nodeType": "VariableDeclaration",
                          "scope": 2354,
                          "src": "3962:21:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 2296,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "3962:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2298,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3962:21:4"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2300,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2234,
                                "src": "4004:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 2299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3998:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": "bytes"
                            },
                            "id": 2301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3998:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 2302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3998:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4025:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3998:28:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 2324,
                        "nodeType": "Block",
                        "src": "4074:95:4",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2310,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2297,
                                "src": "4088:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2316,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2234,
                                                "src": "4139:9:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_string_memory_ptr",
                                                  "typeString": "string memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_string_memory_ptr",
                                                  "typeString": "string memory"
                                                }
                                              ],
                                              "id": 2315,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "4133:5:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                "typeString": "type(bytes storage pointer)"
                                              },
                                              "typeName": "bytes"
                                            },
                                            "id": 2317,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4133:16:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 2314,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3831,
                                          "src": "4123:9:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 2318,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4123:27:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2313,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4116:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes4_$",
                                        "typeString": "type(bytes4)"
                                      },
                                      "typeName": "bytes4"
                                    },
                                    "id": 2319,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4116:35:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2320,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2236,
                                    "src": "4153:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2311,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3824,
                                    "src": "4099:3:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 2312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4099:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 2321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4099:59:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "src": "4088:70:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2323,
                            "nodeType": "ExpressionStatement",
                            "src": "4088:70:4"
                          }
                        ]
                      },
                      "id": 2325,
                      "nodeType": "IfStatement",
                      "src": "3994:175:4",
                      "trueBody": {
                        "id": 2309,
                        "nodeType": "Block",
                        "src": "4028:40:4",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2305,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2297,
                                "src": "4042:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2306,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2236,
                                "src": "4053:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "src": "4042:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2308,
                            "nodeType": "ExpressionStatement",
                            "src": "4042:15:4"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        2327,
                        2329
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2327,
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "scope": 2354,
                          "src": "4239:12:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 2326,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "4239:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2329,
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "scope": 2354,
                          "src": "4253:23:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 2328,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "4253:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2337,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2335,
                            "name": "callData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2297,
                            "src": "4305:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2333,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2232,
                              "src": "4298:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2330,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2230,
                                "src": "4280:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4280:11:4",
                              "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": 2332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4280:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$",
                              "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"
                            }
                          },
                          "id": 2334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4280:24:4",
                          "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": 2336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4280:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4238:76:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2339,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2327,
                            "src": "4332:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e",
                            "id": 2340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4341:63:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""
                            },
                            "value": "Timelock::executeTransaction: Transaction execution reverted."
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9",
                              "typeString": "literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""
                            }
                          ],
                          "id": 2338,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "4324:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4324:81:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2342,
                      "nodeType": "ExpressionStatement",
                      "src": "4324:81:4"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2344,
                            "name": "txHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2252,
                            "src": "4440:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2345,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2230,
                            "src": "4448:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2346,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2232,
                            "src": "4456:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2347,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2234,
                            "src": "4463:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2348,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2236,
                            "src": "4474:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2349,
                            "name": "eta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2238,
                            "src": "4480:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2343,
                          "name": "ExecuteTransaction",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1957,
                          "src": "4421:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                            "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                          }
                        },
                        "id": 2350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4421:63:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2351,
                      "nodeType": "EmitStatement",
                      "src": "4416:68:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2352,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2329,
                        "src": "4502:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "functionReturnParameters": 2242,
                      "id": 2353,
                      "nodeType": "Return",
                      "src": "4495:17:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2355,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "executeTransaction",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2239,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2230,
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "scope": 2355,
                      "src": "3256:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2229,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3256:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2232,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 2355,
                      "src": "3272:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2231,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3272:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2234,
                      "name": "signature",
                      "nodeType": "VariableDeclaration",
                      "scope": 2355,
                      "src": "3284:23:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2233,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3284:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2236,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 2355,
                      "src": "3309:17:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2235,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3309:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2238,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 2355,
                      "src": "3328:8:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2237,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3328:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3255:82:4"
                },
                "returnParameters": {
                  "id": 2242,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2241,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2355,
                      "src": "3362:12:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2240,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3362:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3361:14:4"
                },
                "scope": 2365,
                "src": "3228:1291:4",
                "stateMutability": "payable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2363,
                  "nodeType": "Block",
                  "src": "4583:101:4",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2360,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3827,
                          "src": "4662:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 2361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4662:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2359,
                      "id": 2362,
                      "nodeType": "Return",
                      "src": "4655:22:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 2364,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getBlockTimestamp",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2356,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4551:2:4"
                },
                "returnParameters": {
                  "id": 2359,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2358,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2364,
                      "src": "4577:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2357,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4577:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4576:6:4"
                },
                "scope": 2365,
                "src": "4525:159:4",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "internal"
              }
            ],
            "scope": 2366,
            "src": "52:4634:4"
          }
        ],
        "src": "0:4686:4"
      }
    },
    "contracts/TreasuryVester.sol": {
      "id": 5,
      "AST": {
        "absolutePath": "contracts/TreasuryVester.sol",
        "exportedSymbols": {
          "IUni": [
            2548
          ],
          "TreasuryVester": [
            2531
          ]
        },
        "id": 2549,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2367,
            "literals": [
              "solidity",
              "^",
              "0.5",
              ".16"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:5"
          },
          {
            "absolutePath": "contracts/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 2368,
            "nodeType": "ImportDirective",
            "scope": 2549,
            "sourceUnit": 1912,
            "src": "26:24:5",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2531,
            "linearizedBaseContracts": [
              2531
            ],
            "name": "TreasuryVester",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 2371,
                "libraryName": {
                  "contractScope": null,
                  "id": 2369,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1911,
                  "src": "88:8:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$1911",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "82:24:5",
                "typeName": {
                  "id": 2370,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "101:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "id": 2373,
                "name": "uni",
                "nodeType": "VariableDeclaration",
                "scope": 2531,
                "src": "112:18:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2372,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "112:7:5",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2375,
                "name": "recipient",
                "nodeType": "VariableDeclaration",
                "scope": 2531,
                "src": "136:24:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2374,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "136:7:5",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2377,
                "name": "vestingAmount",
                "nodeType": "VariableDeclaration",
                "scope": 2531,
                "src": "167:25:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2376,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "167:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2379,
                "name": "vestingBegin",
                "nodeType": "VariableDeclaration",
                "scope": 2531,
                "src": "198:24:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2378,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "198:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2381,
                "name": "vestingCliff",
                "nodeType": "VariableDeclaration",
                "scope": 2531,
                "src": "228:24:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2380,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "228:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2383,
                "name": "vestingEnd",
                "nodeType": "VariableDeclaration",
                "scope": 2531,
                "src": "258:22:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2382,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "258:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2385,
                "name": "lastUpdate",
                "nodeType": "VariableDeclaration",
                "scope": 2531,
                "src": "287:22:5",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2384,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "287:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2450,
                  "nodeType": "Block",
                  "src": "502:549:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2404,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2401,
                              "name": "vestingBegin_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "520:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2402,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "537:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "537:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "520:32:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54726561737572795665737465723a3a636f6e7374727563746f723a2076657374696e6720626567696e20746f6f206561726c79",
                            "id": 2405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "554:54:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_09163af30592a0265e62dedc5fc906b808a65a50a9441d7812f688ad12a1206d",
                              "typeString": "literal_string \"TreasuryVester::constructor: vesting begin too early\""
                            },
                            "value": "TreasuryVester::constructor: vesting begin too early"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_09163af30592a0265e62dedc5fc906b808a65a50a9441d7812f688ad12a1206d",
                              "typeString": "literal_string \"TreasuryVester::constructor: vesting begin too early\""
                            }
                          ],
                          "id": 2400,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "512:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "512:97:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2407,
                      "nodeType": "ExpressionStatement",
                      "src": "512:97:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2409,
                              "name": "vestingCliff_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2395,
                              "src": "627:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2410,
                              "name": "vestingBegin_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "644:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "627:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54726561737572795665737465723a3a636f6e7374727563746f723a20636c69666620697320746f6f206561726c79",
                            "id": 2412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "659:49:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_35c3cc7a06ae29e16019de0538c0ba6420149f79596b0c38f3eba08c3093ff3b",
                              "typeString": "literal_string \"TreasuryVester::constructor: cliff is too early\""
                            },
                            "value": "TreasuryVester::constructor: cliff is too early"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_35c3cc7a06ae29e16019de0538c0ba6420149f79596b0c38f3eba08c3093ff3b",
                              "typeString": "literal_string \"TreasuryVester::constructor: cliff is too early\""
                            }
                          ],
                          "id": 2408,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "619:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "619:90:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2414,
                      "nodeType": "ExpressionStatement",
                      "src": "619:90:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2418,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2416,
                              "name": "vestingEnd_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2397,
                              "src": "727:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2417,
                              "name": "vestingCliff_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2395,
                              "src": "741:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "727:27:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54726561737572795665737465723a3a636f6e7374727563746f723a20656e6420697320746f6f206561726c79",
                            "id": 2419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "756:47:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dcb0b67dfd6c6c23ab9b7c4279eb213ceef64fa99bb9437956633624eafaf3ec",
                              "typeString": "literal_string \"TreasuryVester::constructor: end is too early\""
                            },
                            "value": "TreasuryVester::constructor: end is too early"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_dcb0b67dfd6c6c23ab9b7c4279eb213ceef64fa99bb9437956633624eafaf3ec",
                              "typeString": "literal_string \"TreasuryVester::constructor: end is too early\""
                            }
                          ],
                          "id": 2415,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "719:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "719:85:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2421,
                      "nodeType": "ExpressionStatement",
                      "src": "719:85:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2422,
                          "name": "uni",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2373,
                          "src": "815:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2423,
                          "name": "uni_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2387,
                          "src": "821:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "815:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2425,
                      "nodeType": "ExpressionStatement",
                      "src": "815:10:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2426,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2375,
                          "src": "835:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2427,
                          "name": "recipient_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2389,
                          "src": "847:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "835:22:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2429,
                      "nodeType": "ExpressionStatement",
                      "src": "835:22:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2430,
                          "name": "vestingAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2377,
                          "src": "868:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2431,
                          "name": "vestingAmount_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2391,
                          "src": "884:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "868:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2433,
                      "nodeType": "ExpressionStatement",
                      "src": "868:30:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2434,
                          "name": "vestingBegin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2379,
                          "src": "908:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2435,
                          "name": "vestingBegin_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2393,
                          "src": "923:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "908:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2437,
                      "nodeType": "ExpressionStatement",
                      "src": "908:28:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2438,
                          "name": "vestingCliff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2381,
                          "src": "946:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2439,
                          "name": "vestingCliff_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2395,
                          "src": "961:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "946:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2441,
                      "nodeType": "ExpressionStatement",
                      "src": "946:28:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2442,
                          "name": "vestingEnd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2383,
                          "src": "984:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2443,
                          "name": "vestingEnd_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2397,
                          "src": "997:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "984:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2445,
                      "nodeType": "ExpressionStatement",
                      "src": "984:24:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2446,
                          "name": "lastUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2385,
                          "src": "1019:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2447,
                          "name": "vestingBegin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2379,
                          "src": "1032:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1019:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2449,
                      "nodeType": "ExpressionStatement",
                      "src": "1019:25:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 2451,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2398,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2387,
                      "name": "uni_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2451,
                      "src": "337:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2386,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "337:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2389,
                      "name": "recipient_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2451,
                      "src": "359:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2388,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "359:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2391,
                      "name": "vestingAmount_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2451,
                      "src": "387:19:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2390,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "387:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2393,
                      "name": "vestingBegin_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2451,
                      "src": "416:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2392,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "416:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2395,
                      "name": "vestingCliff_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2451,
                      "src": "444:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2394,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "444:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2397,
                      "name": "vestingEnd_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2451,
                      "src": "472:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2396,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "472:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "327:167:5"
                },
                "returnParameters": {
                  "id": 2399,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "502:0:5"
                },
                "scope": 2531,
                "src": "316:735:5",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2468,
                  "nodeType": "Block",
                  "src": "1106:127:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2457,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "1124:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1124:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2459,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2375,
                              "src": "1138:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1124:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54726561737572795665737465723a3a736574526563697069656e743a20756e617574686f72697a6564",
                            "id": 2461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1149:44:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_255e80001dd1de03bec2d29e1b244b79e563530aa3b97169afde0ecbb8c3eed7",
                              "typeString": "literal_string \"TreasuryVester::setRecipient: unauthorized\""
                            },
                            "value": "TreasuryVester::setRecipient: unauthorized"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_255e80001dd1de03bec2d29e1b244b79e563530aa3b97169afde0ecbb8c3eed7",
                              "typeString": "literal_string \"TreasuryVester::setRecipient: unauthorized\""
                            }
                          ],
                          "id": 2456,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1116:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1116:78:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2463,
                      "nodeType": "ExpressionStatement",
                      "src": "1116:78:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2464,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2375,
                          "src": "1204:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2465,
                          "name": "recipient_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2453,
                          "src": "1216:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1204:22:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2467,
                      "nodeType": "ExpressionStatement",
                      "src": "1204:22:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 2469,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setRecipient",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2454,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2453,
                      "name": "recipient_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2469,
                      "src": "1079:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2452,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1079:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1078:20:5"
                },
                "returnParameters": {
                  "id": 2455,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1106:0:5"
                },
                "scope": 2531,
                "src": "1057:176:5",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2529,
                  "nodeType": "Block",
                  "src": "1263:436:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2473,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "1281:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1281:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "vestingCliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2381,
                              "src": "1300:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1281:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "54726561737572795665737465723a3a636c61696d3a206e6f742074696d6520796574",
                            "id": 2477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1314:37:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_912c03e905455085d4b75b77e3f70b08e0a333cb61fbb08675e1e5933c40d5f1",
                              "typeString": "literal_string \"TreasuryVester::claim: not time yet\""
                            },
                            "value": "TreasuryVester::claim: not time yet"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_912c03e905455085d4b75b77e3f70b08e0a333cb61fbb08675e1e5933c40d5f1",
                              "typeString": "literal_string \"TreasuryVester::claim: not time yet\""
                            }
                          ],
                          "id": 2472,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "1273:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1273:79:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2479,
                      "nodeType": "ExpressionStatement",
                      "src": "1273:79:5"
                    },
                    {
                      "assignments": [
                        2481
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2481,
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "scope": 2529,
                          "src": "1362:11:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2480,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1362:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2482,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1362:11:5"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2483,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3827,
                            "src": "1387:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1387:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2485,
                          "name": "vestingEnd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2383,
                          "src": "1406:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1387:29:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 2519,
                        "nodeType": "Block",
                        "src": "1492:154:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2499,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2481,
                                "src": "1506:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2510,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2508,
                                      "name": "vestingEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2383,
                                      "src": "1567:10:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2509,
                                      "name": "vestingBegin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2379,
                                      "src": "1580:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1567:25:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2505,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2502,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3827,
                                            "src": "1533:5:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 2503,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "1533:15:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2504,
                                          "name": "lastUpdate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2385,
                                          "src": "1551:10:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1533:28:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2500,
                                        "name": "vestingAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2377,
                                        "src": "1515:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2501,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1792,
                                      "src": "1515:17:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1515:47:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1844,
                                  "src": "1515:51:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1515:78:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1506:87:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2513,
                            "nodeType": "ExpressionStatement",
                            "src": "1506:87:5"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2514,
                                "name": "lastUpdate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2385,
                                "src": "1607:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2515,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3827,
                                  "src": "1620:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 2516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1620:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1607:28:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2518,
                            "nodeType": "ExpressionStatement",
                            "src": "1607:28:5"
                          }
                        ]
                      },
                      "id": 2520,
                      "nodeType": "IfStatement",
                      "src": "1383:263:5",
                      "trueBody": {
                        "id": 2498,
                        "nodeType": "Block",
                        "src": "1418:68:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2487,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2481,
                                "src": "1432:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2493,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3869,
                                        "src": "1469:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TreasuryVester_$2531",
                                          "typeString": "contract TreasuryVester"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TreasuryVester_$2531",
                                          "typeString": "contract TreasuryVester"
                                        }
                                      ],
                                      "id": 2492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1461:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 2494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1461:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2489,
                                        "name": "uni",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2373,
                                        "src": "1446:3:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2488,
                                      "name": "IUni",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2548,
                                      "src": "1441:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IUni_$2548_$",
                                        "typeString": "type(contract IUni)"
                                      }
                                    },
                                    "id": 2490,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1441:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IUni_$2548",
                                      "typeString": "contract IUni"
                                    }
                                  },
                                  "id": 2491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2538,
                                  "src": "1441:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1441:34:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1432:43:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2497,
                            "nodeType": "ExpressionStatement",
                            "src": "1432:43:5"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2525,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2375,
                            "src": "1674:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2526,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2481,
                            "src": "1685:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2522,
                                "name": "uni",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2373,
                                "src": "1660:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2521,
                              "name": "IUni",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2548,
                              "src": "1655:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IUni_$2548_$",
                                "typeString": "type(contract IUni)"
                              }
                            },
                            "id": 2523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1655:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUni_$2548",
                              "typeString": "contract IUni"
                            }
                          },
                          "id": 2524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2547,
                          "src": "1655:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 2527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1655:37:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2528,
                      "nodeType": "ExpressionStatement",
                      "src": "1655:37:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 2530,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "claim",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2470,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1253:2:5"
                },
                "returnParameters": {
                  "id": 2471,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1263:0:5"
                },
                "scope": 2531,
                "src": "1239:460:5",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              }
            ],
            "scope": 2549,
            "src": "52:1649:5"
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 2548,
            "linearizedBaseContracts": [
              2548
            ],
            "name": "IUni",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "id": 2538,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2534,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2533,
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 2538,
                      "src": "1743:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2532,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1743:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1742:17:5"
                },
                "returnParameters": {
                  "id": 2537,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2536,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2538,
                      "src": "1783:4:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2535,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1783:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1782:6:5"
                },
                "scope": 2548,
                "src": "1724:65:5",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "id": 2547,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2543,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2540,
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "scope": 2547,
                      "src": "1812:11:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2539,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1812:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2542,
                      "name": "rawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2547,
                      "src": "1825:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2541,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1825:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1811:29:5"
                },
                "returnParameters": {
                  "id": 2546,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2545,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2547,
                      "src": "1859:4:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2544,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1859:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1858:6:5"
                },
                "scope": 2548,
                "src": "1794:71:5",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              }
            ],
            "scope": 2549,
            "src": "1703:164:5"
          }
        ],
        "src": "0:1867:5"
      }
    },
    "contracts/Uni.sol": {
      "id": 6,
      "AST": {
        "absolutePath": "contracts/Uni.sol",
        "exportedSymbols": {
          "Uni": [
            3822
          ]
        },
        "id": 3823,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2550,
            "literals": [
              "solidity",
              "^",
              "0.5",
              ".16"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:6"
          },
          {
            "id": 2551,
            "literals": [
              "experimental",
              "ABIEncoderV2"
            ],
            "nodeType": "PragmaDirective",
            "src": "25:33:6"
          },
          {
            "absolutePath": "contracts/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 2552,
            "nodeType": "ImportDirective",
            "scope": 3823,
            "sourceUnit": 1912,
            "src": "60:24:6",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 3822,
            "linearizedBaseContracts": [
              3822
            ],
            "name": "Uni",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": true,
                "id": 2555,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "154:39:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2553,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "154:6:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "556e6973776170",
                  "id": 2554,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "184:9:6",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985",
                    "typeString": "literal_string \"Uniswap\""
                  },
                  "value": "Uniswap"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 2558,
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "251:37:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2556,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "251:6:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "554e49",
                  "id": 2557,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "283:5:6",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_fba01d52a7cd84480d0573725899486a0b5e55c20ff45d6628874349375d1650",
                    "typeString": "literal_string \"UNI\""
                  },
                  "value": "UNI"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 2561,
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "348:35:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2559,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "348:5:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 2560,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "381:2:6",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2564,
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "444:42:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2562,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "444:4:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "315f3030305f3030305f303030653138",
                  "id": 2563,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "470:16:6",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                    "typeString": "int_const 1000000000000000000000000000"
                  },
                  "value": "1_000_000_000e18"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2566,
                "name": "minter",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "560:21:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2565,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "560:7:6",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2568,
                "name": "mintingAllowedAfter",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "648:31:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2567,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "648:4:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 2573,
                "name": "minimumTimeBetweenMints",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "729:61:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 2569,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "729:6:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_31536000_by_1",
                    "typeString": "int_const 31536000"
                  },
                  "id": 2572,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 2570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "778:6:6",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "1"
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "*",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "333635",
                    "id": 2571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "787:3:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_365_by_1",
                      "typeString": "int_const 365"
                    },
                    "value": "365"
                  },
                  "src": "778:12:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_31536000_by_1",
                    "typeString": "int_const 31536000"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 2576,
                "name": "mintCap",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "882:33:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2574,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "882:5:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "32",
                  "id": 2575,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "914:1:6",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_2_by_1",
                    "typeString": "int_const 2"
                  },
                  "value": "2"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2582,
                "name": "allowances",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "976:68:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$",
                  "typeString": "mapping(address => mapping(address => uint96))"
                },
                "typeName": {
                  "id": 2581,
                  "keyType": {
                    "id": 2577,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "985:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "976:48:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$",
                    "typeString": "mapping(address => mapping(address => uint96))"
                  },
                  "valueType": {
                    "id": 2580,
                    "keyType": {
                      "id": 2578,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1005:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "996:27:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                      "typeString": "mapping(address => uint96)"
                    },
                    "valueType": {
                      "id": 2579,
                      "name": "uint96",
                      "nodeType": "ElementaryTypeName",
                      "src": "1016:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2586,
                "name": "balances",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "1118:45:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                  "typeString": "mapping(address => uint96)"
                },
                "typeName": {
                  "id": 2585,
                  "keyType": {
                    "id": 2583,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1127:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1118:27:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                    "typeString": "mapping(address => uint96)"
                  },
                  "valueType": {
                    "id": 2584,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1138:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2590,
                "name": "delegates",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "1221:45:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                  "typeString": "mapping(address => address)"
                },
                "typeName": {
                  "id": 2589,
                  "keyType": {
                    "id": 2587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1230:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1221:28:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "valueType": {
                    "id": 2588,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1241:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "canonicalName": "Uni.Checkpoint",
                "id": 2595,
                "members": [
                  {
                    "constant": false,
                    "id": 2592,
                    "name": "fromBlock",
                    "nodeType": "VariableDeclaration",
                    "scope": 2595,
                    "src": "1377:16:6",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "typeName": {
                      "id": 2591,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1377:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 2594,
                    "name": "votes",
                    "nodeType": "VariableDeclaration",
                    "scope": 2595,
                    "src": "1403:12:6",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "typeName": {
                      "id": 2593,
                      "name": "uint96",
                      "nodeType": "ElementaryTypeName",
                      "src": "1403:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Checkpoint",
                "nodeType": "StructDefinition",
                "scope": 3822,
                "src": "1349:73:6",
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2601,
                "name": "checkpoints",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "1501:70:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                  "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint))"
                },
                "typeName": {
                  "id": 2600,
                  "keyType": {
                    "id": 2596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1510:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1501:51:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                    "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint))"
                  },
                  "valueType": {
                    "id": 2599,
                    "keyType": {
                      "id": 2597,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1530:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1521:30:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                      "typeString": "mapping(uint32 => struct Uni.Checkpoint)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 2598,
                      "name": "Checkpoint",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 2595,
                      "src": "1540:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Checkpoint_$2595_storage_ptr",
                        "typeString": "struct Uni.Checkpoint"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2605,
                "name": "numCheckpoints",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "1637:49:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                  "typeString": "mapping(address => uint32)"
                },
                "typeName": {
                  "id": 2604,
                  "keyType": {
                    "id": 2602,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1646:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1637:27:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                    "typeString": "mapping(address => uint32)"
                  },
                  "valueType": {
                    "id": 2603,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1657:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 2610,
                "name": "DOMAIN_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "1756:122:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2606,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1756:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                      "id": 2608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1808:69:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                        "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                      },
                      "value": "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                        "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                      }
                    ],
                    "id": 2607,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3831,
                    "src": "1798:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 2609,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1798:80:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 2615,
                "name": "DELEGATION_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "1969:117:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2611,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1969:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "44656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929",
                      "id": 2613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2025:60:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf",
                        "typeString": "literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""
                      },
                      "value": "Delegation(address delegatee,uint256 nonce,uint256 expiry)"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf",
                        "typeString": "literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""
                      }
                    ],
                    "id": 2612,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3831,
                    "src": "2015:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 2614,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "2015:71:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 2620,
                "name": "PERMIT_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "2173:137:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2616,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2173:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                      "id": 2618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2225:84:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                        "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                      },
                      "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                        "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                      }
                    ],
                    "id": 2617,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3831,
                    "src": "2215:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 2619,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "2215:95:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 2624,
                "name": "nonces",
                "nodeType": "VariableDeclaration",
                "scope": 3822,
                "src": "2388:39:6",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 2623,
                  "keyType": {
                    "id": 2621,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2397:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "2388:25:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 2622,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2408:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event thats emitted when the minter address is changed",
                "id": 2630,
                "name": "MinterChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 2629,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2626,
                      "indexed": false,
                      "name": "minter",
                      "nodeType": "VariableDeclaration",
                      "scope": 2630,
                      "src": "2528:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2625,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2528:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2628,
                      "indexed": false,
                      "name": "newMinter",
                      "nodeType": "VariableDeclaration",
                      "scope": 2630,
                      "src": "2544:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2627,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2544:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2527:35:6"
                },
                "src": "2508:55:6"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event thats emitted when an account changes its delegate",
                "id": 2638,
                "name": "DelegateChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 2637,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2632,
                      "indexed": true,
                      "name": "delegator",
                      "nodeType": "VariableDeclaration",
                      "scope": 2638,
                      "src": "2667:25:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2631,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2667:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2634,
                      "indexed": true,
                      "name": "fromDelegate",
                      "nodeType": "VariableDeclaration",
                      "scope": 2638,
                      "src": "2694:28:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2633,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2694:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2636,
                      "indexed": true,
                      "name": "toDelegate",
                      "nodeType": "VariableDeclaration",
                      "scope": 2638,
                      "src": "2724:26:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2635,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2724:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2666:85:6"
                },
                "src": "2645:107:6"
              },
              {
                "anonymous": false,
                "documentation": "@notice An event thats emitted when a delegate account's vote balance changes",
                "id": 2646,
                "name": "DelegateVotesChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 2645,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2640,
                      "indexed": true,
                      "name": "delegate",
                      "nodeType": "VariableDeclaration",
                      "scope": 2646,
                      "src": "2871:24:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2639,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2871:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2642,
                      "indexed": false,
                      "name": "previousBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 2646,
                      "src": "2897:20:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2641,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2897:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2644,
                      "indexed": false,
                      "name": "newBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 2646,
                      "src": "2919:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2643,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2919:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2870:65:6"
                },
                "src": "2844:92:6"
              },
              {
                "anonymous": false,
                "documentation": "@notice The standard EIP-20 transfer event",
                "id": 2654,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 2653,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2648,
                      "indexed": true,
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "scope": 2654,
                      "src": "3008:20:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2647,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3008:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2650,
                      "indexed": true,
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "scope": 2654,
                      "src": "3030:18:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2649,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3030:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2652,
                      "indexed": false,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2654,
                      "src": "3050:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2651,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3050:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3007:58:6"
                },
                "src": "2993:73:6"
              },
              {
                "anonymous": false,
                "documentation": "@notice The standard EIP-20 approval event",
                "id": 2662,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 2661,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2656,
                      "indexed": true,
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 2662,
                      "src": "3138:21:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2655,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3138:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2658,
                      "indexed": true,
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 2662,
                      "src": "3161:23:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2657,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3161:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2660,
                      "indexed": false,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2662,
                      "src": "3186:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2659,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3186:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3137:64:6"
                },
                "src": "3123:79:6"
              },
              {
                "body": {
                  "id": 2710,
                  "nodeType": "Block",
                  "src": "3545:359:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2672,
                              "name": "mintingAllowedAfter_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2668,
                              "src": "3563:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2673,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "3587:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3587:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3563:39:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e6c7920626567696e206166746572206465706c6f796d656e74",
                            "id": 2676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3604:59:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_709d77ba4b86f1914120b68d9c9230eddba9a66e2dbda0bfb5bc324846702760",
                              "typeString": "literal_string \"Uni::constructor: minting can only begin after deployment\""
                            },
                            "value": "Uni::constructor: minting can only begin after deployment"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_709d77ba4b86f1914120b68d9c9230eddba9a66e2dbda0bfb5bc324846702760",
                              "typeString": "literal_string \"Uni::constructor: minting can only begin after deployment\""
                            }
                          ],
                          "id": 2671,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "3555:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3555:109:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2678,
                      "nodeType": "ExpressionStatement",
                      "src": "3555:109:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2679,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "3675:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                              "typeString": "mapping(address => uint96)"
                            }
                          },
                          "id": 2681,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2680,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2664,
                            "src": "3684:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "3675:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2683,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2564,
                              "src": "3702:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3695:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": "uint96"
                          },
                          "id": 2684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3695:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "3675:39:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "id": 2686,
                      "nodeType": "ExpressionStatement",
                      "src": "3675:39:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3746: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": 2688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3738:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3738:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2691,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2664,
                            "src": "3750:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2692,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2564,
                            "src": "3759:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2687,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2654,
                          "src": "3729:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3729:42:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2694,
                      "nodeType": "EmitStatement",
                      "src": "3724:47:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2695,
                          "name": "minter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2566,
                          "src": "3781:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2696,
                          "name": "minter_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2666,
                          "src": "3790:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3781:16:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2698,
                      "nodeType": "ExpressionStatement",
                      "src": "3781:16:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3834: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": 2700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3826:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3826:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2703,
                            "name": "minter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2566,
                            "src": "3838:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2699,
                          "name": "MinterChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2630,
                          "src": "3812:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 2704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3812:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2705,
                      "nodeType": "EmitStatement",
                      "src": "3807:38:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2706,
                          "name": "mintingAllowedAfter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2568,
                          "src": "3855:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2707,
                          "name": "mintingAllowedAfter_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2668,
                          "src": "3877:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3855:42:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2709,
                      "nodeType": "ExpressionStatement",
                      "src": "3855:42:6"
                    }
                  ]
                },
                "documentation": "@notice Construct a new Uni token\n@param account The initial account to grant all the tokens\n@param minter_ The account with minting ability\n@param mintingAllowedAfter_ The timestamp after which minting may occur",
                "id": 2711,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2669,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2664,
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 2711,
                      "src": "3477:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2663,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3477:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2666,
                      "name": "minter_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2711,
                      "src": "3494:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2665,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3494:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2668,
                      "name": "mintingAllowedAfter_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2711,
                      "src": "3511:25:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2667,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3511:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3476:61:6"
                },
                "returnParameters": {
                  "id": 2670,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3545:0:6"
                },
                "scope": 3822,
                "src": "3465:439:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2733,
                  "nodeType": "Block",
                  "src": "4064:182:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2717,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "4082:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4082:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2719,
                              "name": "minter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2566,
                              "src": "4096:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4082:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722063616e206368616e676520746865206d696e7465722061646472657373",
                            "id": 2721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4104:63:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d0c976c03aaa94802283adf77ef1ce74ec8a066553c069fcfec5a68a1eb9411a",
                              "typeString": "literal_string \"Uni::setMinter: only the minter can change the minter address\""
                            },
                            "value": "Uni::setMinter: only the minter can change the minter address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d0c976c03aaa94802283adf77ef1ce74ec8a066553c069fcfec5a68a1eb9411a",
                              "typeString": "literal_string \"Uni::setMinter: only the minter can change the minter address\""
                            }
                          ],
                          "id": 2716,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "4074:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4074:94:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2723,
                      "nodeType": "ExpressionStatement",
                      "src": "4074:94:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2725,
                            "name": "minter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2566,
                            "src": "4197:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2726,
                            "name": "minter_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2713,
                            "src": "4205:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2724,
                          "name": "MinterChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2630,
                          "src": "4183:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 2727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4183:30:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2728,
                      "nodeType": "EmitStatement",
                      "src": "4178:35:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2729,
                          "name": "minter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2566,
                          "src": "4223:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2730,
                          "name": "minter_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2713,
                          "src": "4232:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4223:16:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2732,
                      "nodeType": "ExpressionStatement",
                      "src": "4223:16:6"
                    }
                  ]
                },
                "documentation": "@notice Change the minter address\n@param minter_ The address of the new minter",
                "id": 2734,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setMinter",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2714,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2713,
                      "name": "minter_",
                      "nodeType": "VariableDeclaration",
                      "scope": 2734,
                      "src": "4038:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2712,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4038:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4037:17:6"
                },
                "returnParameters": {
                  "id": 2715,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4064:0:6"
                },
                "scope": 3822,
                "src": "4019:227:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2838,
                  "nodeType": "Block",
                  "src": "4466:987:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2742,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "4484:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4484:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2744,
                              "name": "minter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2566,
                              "src": "4498:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4484:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d696e74",
                            "id": 2746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4506:37:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cc6a5c1b47b7f8bc902cdb48ac9758787b1a8119a1909e02b5432deee2d32a62",
                              "typeString": "literal_string \"Uni::mint: only the minter can mint\""
                            },
                            "value": "Uni::mint: only the minter can mint"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_cc6a5c1b47b7f8bc902cdb48ac9758787b1a8119a1909e02b5432deee2d32a62",
                              "typeString": "literal_string \"Uni::mint: only the minter can mint\""
                            }
                          ],
                          "id": 2741,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "4476:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4476:68:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2748,
                      "nodeType": "ExpressionStatement",
                      "src": "4476:68:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2750,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "4562:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4562:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2752,
                              "name": "mintingAllowedAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2568,
                              "src": "4581:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4562:38:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f77656420796574",
                            "id": 2754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4602:36:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7b0ec4a3f6bfba673b135595084a79859c9e4ba0d9455df08bfb3bece6df3142",
                              "typeString": "literal_string \"Uni::mint: minting not allowed yet\""
                            },
                            "value": "Uni::mint: minting not allowed yet"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7b0ec4a3f6bfba673b135595084a79859c9e4ba0d9455df08bfb3bece6df3142",
                              "typeString": "literal_string \"Uni::mint: minting not allowed yet\""
                            }
                          ],
                          "id": 2749,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "4554:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4554:85:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2756,
                      "nodeType": "ExpressionStatement",
                      "src": "4554:85:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2758,
                              "name": "dst",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2736,
                              "src": "4657:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4672: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": 2759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4664:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4664:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "4657:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373",
                            "id": 2763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4676:48:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f24bdbd67fb75785b275770fb658b786eb2736feb96698cf0894896fdf28c73",
                              "typeString": "literal_string \"Uni::mint: cannot transfer to the zero address\""
                            },
                            "value": "Uni::mint: cannot transfer to the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5f24bdbd67fb75785b275770fb658b786eb2736feb96698cf0894896fdf28c73",
                              "typeString": "literal_string \"Uni::mint: cannot transfer to the zero address\""
                            }
                          ],
                          "id": 2757,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "4649:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4649:76:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2765,
                      "nodeType": "ExpressionStatement",
                      "src": "4649:76:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2773,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2766,
                          "name": "mintingAllowedAfter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2568,
                          "src": "4763:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2769,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "4798:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4798:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2771,
                              "name": "minimumTimeBetweenMints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2573,
                              "src": "4815:23:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2767,
                              "name": "SafeMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1911,
                              "src": "4785:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_SafeMath_$1911_$",
                                "typeString": "type(library SafeMath)"
                              }
                            },
                            "id": 2768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1688,
                            "src": "4785:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4785:54:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4763:76:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2774,
                      "nodeType": "ExpressionStatement",
                      "src": "4763:76:6"
                    },
                    {
                      "assignments": [
                        2776
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2776,
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "scope": 2838,
                          "src": "4877:13:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 2775,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "4877:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2781,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2778,
                            "name": "rawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2738,
                            "src": "4900:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473",
                            "id": 2779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4911:35:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bcb6733e7ac2aee3c3602ee664d4b3cb251e429df5c7e9148d412d0b60f07b16",
                              "typeString": "literal_string \"Uni::mint: amount exceeds 96 bits\""
                            },
                            "value": "Uni::mint: amount exceeds 96 bits"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bcb6733e7ac2aee3c3602ee664d4b3cb251e429df5c7e9148d412d0b60f07b16",
                              "typeString": "literal_string \"Uni::mint: amount exceeds 96 bits\""
                            }
                          ],
                          "id": 2777,
                          "name": "safe96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3759,
                          "src": "4893:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$",
                            "typeString": "function (uint256,string memory) pure returns (uint96)"
                          }
                        },
                        "id": 2780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4893:54:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4877:70:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2783,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2776,
                              "src": "4965:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2788,
                                      "name": "totalSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2564,
                                      "src": "5001:11:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2789,
                                      "name": "mintCap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2576,
                                      "src": "5014:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2786,
                                      "name": "SafeMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1911,
                                      "src": "4988:8:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeMath_$1911_$",
                                        "typeString": "type(library SafeMath)"
                                      }
                                    },
                                    "id": 2787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1792,
                                    "src": "4988:12:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4988:34:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "313030",
                                  "id": 2791,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5024:3:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2784,
                                  "name": "SafeMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1911,
                                  "src": "4975:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeMath_$1911_$",
                                    "typeString": "type(library SafeMath)"
                                  }
                                },
                                "id": 2785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1844,
                                "src": "4975:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4975:53:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4965:63:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a6d696e743a206578636565646564206d696e7420636170",
                            "id": 2794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5030:30:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c455438be199e7ac7b6d21fdc7332bbd68229582d8b1be9266bdb0f4844638c0",
                              "typeString": "literal_string \"Uni::mint: exceeded mint cap\""
                            },
                            "value": "Uni::mint: exceeded mint cap"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c455438be199e7ac7b6d21fdc7332bbd68229582d8b1be9266bdb0f4844638c0",
                              "typeString": "literal_string \"Uni::mint: exceeded mint cap\""
                            }
                          ],
                          "id": 2782,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "4957:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4957:104:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2796,
                      "nodeType": "ExpressionStatement",
                      "src": "4957:104:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2797,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2564,
                          "src": "5071:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2801,
                                  "name": "totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2564,
                                  "src": "5105:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2802,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2776,
                                  "src": "5118:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2799,
                                  "name": "SafeMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1911,
                                  "src": "5092:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeMath_$1911_$",
                                    "typeString": "type(library SafeMath)"
                                  }
                                },
                                "id": 2800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1688,
                                "src": "5092:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5092:33:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473",
                              "id": 2804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5127:40:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1ef2347f5dbb97e8eb7bc1442a128a1c6e65386b013257fe2b8ad95aaaa96ab8",
                                "typeString": "literal_string \"Uni::mint: totalSupply exceeds 96 bits\""
                              },
                              "value": "Uni::mint: totalSupply exceeds 96 bits"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1ef2347f5dbb97e8eb7bc1442a128a1c6e65386b013257fe2b8ad95aaaa96ab8",
                                "typeString": "literal_string \"Uni::mint: totalSupply exceeds 96 bits\""
                              }
                            ],
                            "id": 2798,
                            "name": "safe96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3759,
                            "src": "5085:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint256,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 2805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5085:83:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "5071:97:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2807,
                      "nodeType": "ExpressionStatement",
                      "src": "5071:97:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2808,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "5227:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                              "typeString": "mapping(address => uint96)"
                            }
                          },
                          "id": 2810,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2809,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2736,
                            "src": "5236:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5227:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2812,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2586,
                                "src": "5249:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                  "typeString": "mapping(address => uint96)"
                                }
                              },
                              "id": 2814,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2813,
                                "name": "dst",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2736,
                                "src": "5258:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5249:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2815,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2776,
                              "src": "5264:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773",
                              "id": 2816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5272:38:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0ab5eae08d50cc345c58c2d7d67f9034a98d0a88dd540314c408c39a8dcec01d",
                                "typeString": "literal_string \"Uni::mint: transfer amount overflows\""
                              },
                              "value": "Uni::mint: transfer amount overflows"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0ab5eae08d50cc345c58c2d7d67f9034a98d0a88dd540314c408c39a8dcec01d",
                                "typeString": "literal_string \"Uni::mint: transfer amount overflows\""
                              }
                            ],
                            "id": 2811,
                            "name": "add96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3786,
                            "src": "5243:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 2817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5243:68:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "5227:84:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "id": 2819,
                      "nodeType": "ExpressionStatement",
                      "src": "5227:84:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5343: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": 2821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5335:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5335:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2824,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2736,
                            "src": "5347:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2825,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "5352:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 2820,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2654,
                          "src": "5326:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2826,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5326:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2827,
                      "nodeType": "EmitStatement",
                      "src": "5321:38:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5419: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": 2829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5411:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5411:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2832,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2590,
                              "src": "5423:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2834,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2833,
                              "name": "dst",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2736,
                              "src": "5433:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5423:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2835,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "5439:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 2828,
                          "name": "_moveDelegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3640,
                          "src": "5396:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$",
                            "typeString": "function (address,address,uint96)"
                          }
                        },
                        "id": 2836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5396:50:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2837,
                      "nodeType": "ExpressionStatement",
                      "src": "5396:50:6"
                    }
                  ]
                },
                "documentation": "@notice Mint new tokens\n@param dst The address of the destination account\n@param rawAmount The number of tokens to be minted",
                "id": 2839,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2739,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2736,
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "scope": 2839,
                      "src": "4428:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2735,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4428:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2738,
                      "name": "rawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2839,
                      "src": "4441:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2737,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4441:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4427:29:6"
                },
                "returnParameters": {
                  "id": 2740,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4466:0:6"
                },
                "scope": 3822,
                "src": "4414:1039:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2854,
                  "nodeType": "Block",
                  "src": "5831:52:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2848,
                            "name": "allowances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2582,
                            "src": "5848:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$",
                              "typeString": "mapping(address => mapping(address => uint96))"
                            }
                          },
                          "id": 2850,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2849,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2841,
                            "src": "5859:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5848:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                            "typeString": "mapping(address => uint96)"
                          }
                        },
                        "id": 2852,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2851,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2843,
                          "src": "5868:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5848:28:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "functionReturnParameters": 2847,
                      "id": 2853,
                      "nodeType": "Return",
                      "src": "5841:35:6"
                    }
                  ]
                },
                "documentation": "@notice Get the number of tokens `spender` is approved to spend on behalf of `account`\n@param account The address of the account holding the funds\n@param spender The address of the account spending the funds\n@return The number of tokens approved",
                "id": 2855,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2844,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2841,
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 2855,
                      "src": "5768:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2840,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5768:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2843,
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 2855,
                      "src": "5785:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2842,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5785:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5767:34:6"
                },
                "returnParameters": {
                  "id": 2847,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2846,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2855,
                      "src": "5825:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2845,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5825:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5824:6:6"
                },
                "scope": 3822,
                "src": "5749:134:6",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2908,
                  "nodeType": "Block",
                  "src": "6425:332:6",
                  "statements": [
                    {
                      "assignments": [
                        2865
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2865,
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "scope": 2908,
                          "src": "6435:13:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 2864,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "6435:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2866,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6435:13:6"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2867,
                          "name": "rawAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2859,
                          "src": "6462:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "6480:2:6",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6481:1:6",
                                "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": 2868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6475:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6475:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6462:21:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 2888,
                        "nodeType": "Block",
                        "src": "6535:91:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2881,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2865,
                                "src": "6549:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2883,
                                    "name": "rawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2859,
                                    "src": "6565:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473",
                                    "id": 2884,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6576:38:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_cb3e128da7f3f16c83a901cce3ab145c66bad45a0cd648091fecc9964ebf42fe",
                                      "typeString": "literal_string \"Uni::approve: amount exceeds 96 bits\""
                                    },
                                    "value": "Uni::approve: amount exceeds 96 bits"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_cb3e128da7f3f16c83a901cce3ab145c66bad45a0cd648091fecc9964ebf42fe",
                                      "typeString": "literal_string \"Uni::approve: amount exceeds 96 bits\""
                                    }
                                  ],
                                  "id": 2882,
                                  "name": "safe96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3759,
                                  "src": "6558:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                    "typeString": "function (uint256,string memory) pure returns (uint96)"
                                  }
                                },
                                "id": 2885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6558:57:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "6549:66:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "id": 2887,
                            "nodeType": "ExpressionStatement",
                            "src": "6549:66:6"
                          }
                        ]
                      },
                      "id": 2889,
                      "nodeType": "IfStatement",
                      "src": "6458:168:6",
                      "trueBody": {
                        "id": 2880,
                        "nodeType": "Block",
                        "src": "6485:44:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2873,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2865,
                                "src": "6499:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2876,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "6515:2:6",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2875,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6516:1:6",
                                      "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": 2874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6508:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint96_$",
                                    "typeString": "type(uint96)"
                                  },
                                  "typeName": "uint96"
                                },
                                "id": 2877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6508:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "6499:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "id": 2879,
                            "nodeType": "ExpressionStatement",
                            "src": "6499:19:6"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2897,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2890,
                              "name": "allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2582,
                              "src": "6636:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$",
                                "typeString": "mapping(address => mapping(address => uint96))"
                              }
                            },
                            "id": 2894,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2891,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "6647:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6647:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6636:22:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                              "typeString": "mapping(address => uint96)"
                            }
                          },
                          "id": 2895,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2893,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "6659:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6636:31:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2896,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2865,
                          "src": "6670:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "6636:40:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "id": 2898,
                      "nodeType": "ExpressionStatement",
                      "src": "6636:40:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2900,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3837,
                              "src": "6701:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6701:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2902,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "6713:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2903,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2865,
                            "src": "6722:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 2899,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2662,
                          "src": "6692:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6692:37:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2905,
                      "nodeType": "EmitStatement",
                      "src": "6687:42:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6746:4:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 2863,
                      "id": 2907,
                      "nodeType": "Return",
                      "src": "6739:11:6"
                    }
                  ]
                },
                "documentation": "@notice Approve `spender` to transfer up to `amount` from `src`\n@dev This will overwrite the approval amount for `spender`\n and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n@param spender The address of the account which may transfer tokens\n@param rawAmount The number of tokens that are approved (2^256-1 means infinite)\n@return Whether or not the approval succeeded",
                "id": 2909,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2860,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2857,
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 2909,
                      "src": "6368:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2856,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6368:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2859,
                      "name": "rawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2909,
                      "src": "6385:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2858,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6385:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6367:33:6"
                },
                "returnParameters": {
                  "id": 2863,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2862,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 2909,
                      "src": "6419:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2861,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6419:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6418:6:6"
                },
                "scope": 3822,
                "src": "6351:406:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3045,
                  "nodeType": "Block",
                  "src": "7354:912:6",
                  "statements": [
                    {
                      "assignments": [
                        2927
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2927,
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "scope": 3045,
                          "src": "7364:13:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 2926,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "7364:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2928,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7364:13:6"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2934,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2929,
                          "name": "rawAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2915,
                          "src": "7391:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "7409:2:6",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7410:1:6",
                                "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": 2930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7404:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7404:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7391:21:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 2950,
                        "nodeType": "Block",
                        "src": "7464:90:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2943,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2927,
                                "src": "7478:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2945,
                                    "name": "rawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2915,
                                    "src": "7494:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473",
                                    "id": 2946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7505:37:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_58da0b91010307ee6a63257c5283618928105e355857d8f79cf7e017ad7082f4",
                                      "typeString": "literal_string \"Uni::permit: amount exceeds 96 bits\""
                                    },
                                    "value": "Uni::permit: amount exceeds 96 bits"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_58da0b91010307ee6a63257c5283618928105e355857d8f79cf7e017ad7082f4",
                                      "typeString": "literal_string \"Uni::permit: amount exceeds 96 bits\""
                                    }
                                  ],
                                  "id": 2944,
                                  "name": "safe96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3759,
                                  "src": "7487:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                    "typeString": "function (uint256,string memory) pure returns (uint96)"
                                  }
                                },
                                "id": 2947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7487:56:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "7478:65:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "id": 2949,
                            "nodeType": "ExpressionStatement",
                            "src": "7478:65:6"
                          }
                        ]
                      },
                      "id": 2951,
                      "nodeType": "IfStatement",
                      "src": "7387:167:6",
                      "trueBody": {
                        "id": 2942,
                        "nodeType": "Block",
                        "src": "7414:44:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2935,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2927,
                                "src": "7428:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "7444:2:6",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2937,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7445:1:6",
                                      "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": 2936,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7437:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint96_$",
                                    "typeString": "type(uint96)"
                                  },
                                  "typeName": "uint96"
                                },
                                "id": 2939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7437:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "7428:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "id": 2941,
                            "nodeType": "ExpressionStatement",
                            "src": "7428:19:6"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        2953
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2953,
                          "name": "domainSeparator",
                          "nodeType": "VariableDeclaration",
                          "scope": 3045,
                          "src": "7564:23:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 2952,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7564:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2970,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2957,
                                "name": "DOMAIN_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2610,
                                "src": "7611:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2960,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2555,
                                        "src": "7644:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 2959,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7638:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": "bytes"
                                    },
                                    "id": 2961,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7638:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2958,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3831,
                                  "src": "7628:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 2962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7628:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2963,
                                  "name": "getChainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3821,
                                  "src": "7652:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 2964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7652:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2966,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3873,
                                    "src": "7674:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Uni_$3822",
                                      "typeString": "contract Uni"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Uni_$3822",
                                      "typeString": "contract Uni"
                                    }
                                  ],
                                  "id": 2965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7666:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7666:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2955,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "7600:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7600:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7600:80:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2954,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "7590:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7590:91:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7564:117:6"
                    },
                    {
                      "assignments": [
                        2972
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2972,
                          "name": "structHash",
                          "nodeType": "VariableDeclaration",
                          "scope": 3045,
                          "src": "7691:18:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 2971,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7691:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2987,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2976,
                                "name": "PERMIT_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2620,
                                "src": "7733:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2977,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2911,
                                "src": "7750:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2978,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2913,
                                "src": "7757:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2979,
                                "name": "rawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2915,
                                "src": "7766:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "7777:15:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2980,
                                    "name": "nonces",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2624,
                                    "src": "7777:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2982,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2981,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2911,
                                    "src": "7784:5:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7777:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2984,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2917,
                                "src": "7794:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2974,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "7722:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7722:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7722:81:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2973,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "7712:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7712:92:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7691:113:6"
                    },
                    {
                      "assignments": [
                        2989
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2989,
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "scope": 3045,
                          "src": "7814:14:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 2988,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7814:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2998,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 2993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7858:10:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 2994,
                                "name": "domainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2953,
                                "src": "7870:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2995,
                                "name": "structHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2972,
                                "src": "7887:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2991,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "7841:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7841:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 2996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7841:57:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 2990,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "7831:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7831:68:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7814:85:6"
                    },
                    {
                      "assignments": [
                        3000
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3000,
                          "name": "signatory",
                          "nodeType": "VariableDeclaration",
                          "scope": 3045,
                          "src": "7909:17:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2999,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7909:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3007,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3002,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2989,
                            "src": "7939:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3003,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2919,
                            "src": "7947:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3004,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2921,
                            "src": "7950:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3005,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2923,
                            "src": "7953:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3001,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3829,
                          "src": "7929:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 3006,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7929:26:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7909:46:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3009,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3000,
                              "src": "7973:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3011,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7994: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": 3010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7986:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 3012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7986:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "7973:23:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a7065726d69743a20696e76616c6964207369676e6174757265",
                            "id": 3014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7998:32:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e94c1ed3488f38be72a83cd591a1465ccfe1e93939cfd7e4bf71c4eb9af19f1a",
                              "typeString": "literal_string \"Uni::permit: invalid signature\""
                            },
                            "value": "Uni::permit: invalid signature"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e94c1ed3488f38be72a83cd591a1465ccfe1e93939cfd7e4bf71c4eb9af19f1a",
                              "typeString": "literal_string \"Uni::permit: invalid signature\""
                            }
                          ],
                          "id": 3008,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "7965:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7965:66:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3016,
                      "nodeType": "ExpressionStatement",
                      "src": "7965:66:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3018,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3000,
                              "src": "8049:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3019,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2911,
                              "src": "8062:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "8049:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a7065726d69743a20756e617574686f72697a6564",
                            "id": 3021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8069:27:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f1c0fd1d78a537bfd8cc59c08393a4da90fc7d3eff469a9fd5787d9f1738b823",
                              "typeString": "literal_string \"Uni::permit: unauthorized\""
                            },
                            "value": "Uni::permit: unauthorized"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f1c0fd1d78a537bfd8cc59c08393a4da90fc7d3eff469a9fd5787d9f1738b823",
                              "typeString": "literal_string \"Uni::permit: unauthorized\""
                            }
                          ],
                          "id": 3017,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "8041:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3022,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8041:56:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3023,
                      "nodeType": "ExpressionStatement",
                      "src": "8041:56:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3025,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3839,
                              "src": "8115:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3026,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2917,
                              "src": "8122:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8115:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a7065726d69743a207369676e61747572652065787069726564",
                            "id": 3028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8132:32:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dfc249d887a80709dc035102a1322af6511c742bde4b1331b9d41e48d95becdb",
                              "typeString": "literal_string \"Uni::permit: signature expired\""
                            },
                            "value": "Uni::permit: signature expired"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_dfc249d887a80709dc035102a1322af6511c742bde4b1331b9d41e48d95becdb",
                              "typeString": "literal_string \"Uni::permit: signature expired\""
                            }
                          ],
                          "id": 3024,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "8107:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8107:58:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3030,
                      "nodeType": "ExpressionStatement",
                      "src": "8107:58:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3037,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3031,
                              "name": "allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2582,
                              "src": "8176:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$",
                                "typeString": "mapping(address => mapping(address => uint96))"
                              }
                            },
                            "id": 3034,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3032,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2911,
                              "src": "8187:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8176:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                              "typeString": "mapping(address => uint96)"
                            }
                          },
                          "id": 3035,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3033,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2913,
                            "src": "8194:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "8176:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 3036,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2927,
                          "src": "8205:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "8176:35:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "id": 3038,
                      "nodeType": "ExpressionStatement",
                      "src": "8176:35:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3040,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2911,
                            "src": "8236:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3041,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2913,
                            "src": "8243:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3042,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2927,
                            "src": "8252:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 3039,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2662,
                          "src": "8227:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8227:32:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3044,
                      "nodeType": "EmitStatement",
                      "src": "8222:37:6"
                    }
                  ]
                },
                "documentation": "@notice Triggers an approval from owner to spends\n@param owner The address to approve from\n@param spender The address to be approved\n@param rawAmount The number of tokens that are approved (2^256-1 means infinite)\n@param deadline The time at which to expire the signature\n@param v The recovery byte of the signature\n@param r Half of the ECDSA signature pair\n@param s Half of the ECDSA signature pair",
                "id": 3046,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 2924,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2911,
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 3046,
                      "src": "7251:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2910,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7251:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2913,
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "scope": 3046,
                      "src": "7266:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2912,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7266:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2915,
                      "name": "rawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3046,
                      "src": "7283:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2914,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7283:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2917,
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 3046,
                      "src": "7299:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2916,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7299:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2919,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3046,
                      "src": "7314:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2918,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "7314:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2921,
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 3046,
                      "src": "7323:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2920,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7323:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2923,
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 3046,
                      "src": "7334:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2922,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7334:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7250:94:6"
                },
                "returnParameters": {
                  "id": 2925,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "7354:0:6"
                },
                "scope": 3822,
                "src": "7235:1031:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3057,
                  "nodeType": "Block",
                  "src": "8527:41:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3053,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2586,
                          "src": "8544:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                            "typeString": "mapping(address => uint96)"
                          }
                        },
                        "id": 3055,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3054,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3048,
                          "src": "8553:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8544:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "functionReturnParameters": 3052,
                      "id": 3056,
                      "nodeType": "Return",
                      "src": "8537:24:6"
                    }
                  ]
                },
                "documentation": "@notice Get the number of tokens held by the `account`\n@param account The address of the account to get the balance of\n@return The number of tokens held",
                "id": 3058,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3049,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3048,
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 3058,
                      "src": "8481:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3047,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8481:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8480:17:6"
                },
                "returnParameters": {
                  "id": 3052,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3051,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3058,
                      "src": "8521:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3050,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8521:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8520:6:6"
                },
                "scope": 3822,
                "src": "8462:106:6",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3083,
                  "nodeType": "Block",
                  "src": "8895:162:6",
                  "statements": [
                    {
                      "assignments": [
                        3068
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3068,
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "scope": 3083,
                          "src": "8905:13:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 3067,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "8905:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3073,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3070,
                            "name": "rawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3062,
                            "src": "8928:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473",
                            "id": 3071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8939:39:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9bc67db7413f33b8f7a9995149809b7b3a4a83b5ba884084bea06cfb35986555",
                              "typeString": "literal_string \"Uni::transfer: amount exceeds 96 bits\""
                            },
                            "value": "Uni::transfer: amount exceeds 96 bits"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9bc67db7413f33b8f7a9995149809b7b3a4a83b5ba884084bea06cfb35986555",
                              "typeString": "literal_string \"Uni::transfer: amount exceeds 96 bits\""
                            }
                          ],
                          "id": 3069,
                          "name": "safe96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3759,
                          "src": "8921:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$",
                            "typeString": "function (uint256,string memory) pure returns (uint96)"
                          }
                        },
                        "id": 3072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8921:58:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8905:74:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3075,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3837,
                              "src": "9005:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9005:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3077,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "9017:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3078,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3068,
                            "src": "9022:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 3074,
                          "name": "_transferTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3533,
                          "src": "8989:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$",
                            "typeString": "function (address,address,uint96)"
                          }
                        },
                        "id": 3079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8989:40:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3080,
                      "nodeType": "ExpressionStatement",
                      "src": "8989:40:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 3081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9046:4:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 3066,
                      "id": 3082,
                      "nodeType": "Return",
                      "src": "9039:11:6"
                    }
                  ]
                },
                "documentation": "@notice Transfer `amount` tokens from `msg.sender` to `dst`\n@param dst The address of the destination account\n@param rawAmount The number of tokens to transfer\n@return Whether or not the transfer succeeded",
                "id": 3084,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3063,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3060,
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "scope": 3084,
                      "src": "8842:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3059,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8842:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3062,
                      "name": "rawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3084,
                      "src": "8855:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3061,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8855:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8841:29:6"
                },
                "returnParameters": {
                  "id": 3066,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3065,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3084,
                      "src": "8889:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3064,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8889:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8888:6:6"
                },
                "scope": 3822,
                "src": "8824:233:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3157,
                  "nodeType": "Block",
                  "src": "9446:568:6",
                  "statements": [
                    {
                      "assignments": [
                        3096
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3096,
                          "name": "spender",
                          "nodeType": "VariableDeclaration",
                          "scope": 3157,
                          "src": "9456:15:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3095,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9456:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3099,
                      "initialValue": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3097,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3837,
                          "src": "9474:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9474:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9456:28:6"
                    },
                    {
                      "assignments": [
                        3101
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3101,
                          "name": "spenderAllowance",
                          "nodeType": "VariableDeclaration",
                          "scope": 3157,
                          "src": "9494:23:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 3100,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "9494:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3107,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3102,
                            "name": "allowances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2582,
                            "src": "9520:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$",
                              "typeString": "mapping(address => mapping(address => uint96))"
                            }
                          },
                          "id": 3104,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3103,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3086,
                            "src": "9531:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9520:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                            "typeString": "mapping(address => uint96)"
                          }
                        },
                        "id": 3106,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3105,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3096,
                          "src": "9536:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9520:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9494:50:6"
                    },
                    {
                      "assignments": [
                        3109
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3109,
                          "name": "amount",
                          "nodeType": "VariableDeclaration",
                          "scope": 3157,
                          "src": "9554:13:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 3108,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "9554:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3114,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3111,
                            "name": "rawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3090,
                            "src": "9577:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473",
                            "id": 3112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9588:38:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cb3e128da7f3f16c83a901cce3ab145c66bad45a0cd648091fecc9964ebf42fe",
                              "typeString": "literal_string \"Uni::approve: amount exceeds 96 bits\""
                            },
                            "value": "Uni::approve: amount exceeds 96 bits"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_cb3e128da7f3f16c83a901cce3ab145c66bad45a0cd648091fecc9964ebf42fe",
                              "typeString": "literal_string \"Uni::approve: amount exceeds 96 bits\""
                            }
                          ],
                          "id": 3110,
                          "name": "safe96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3759,
                          "src": "9570:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$",
                            "typeString": "function (uint256,string memory) pure returns (uint96)"
                          }
                        },
                        "id": 3113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9570:57:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9554:73:6"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3115,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3096,
                            "src": "9642:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3116,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3086,
                            "src": "9653:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9642:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 3123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3118,
                            "name": "spenderAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3101,
                            "src": "9660:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3121,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "9687:2:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3120,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9688:1:6",
                                  "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": 3119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9680:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint96_$",
                                "typeString": "type(uint96)"
                              },
                              "typeName": "uint96"
                            },
                            "id": 3122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9680:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "9660:30:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9642:48:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3148,
                      "nodeType": "IfStatement",
                      "src": "9638:305:6",
                      "trueBody": {
                        "id": 3147,
                        "nodeType": "Block",
                        "src": "9692:251:6",
                        "statements": [
                          {
                            "assignments": [
                              3126
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3126,
                                "name": "newAllowance",
                                "nodeType": "VariableDeclaration",
                                "scope": 3147,
                                "src": "9706:19:6",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "typeName": {
                                  "id": 3125,
                                  "name": "uint96",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9706:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3132,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3128,
                                  "name": "spenderAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3101,
                                  "src": "9734:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3129,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3109,
                                  "src": "9752:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365",
                                  "id": 3130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9760:62:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_136758788d48ec4d9744ba8c2136a9c9406d6c92cd4a81eff0de4942b636db13",
                                    "typeString": "literal_string \"Uni::transferFrom: transfer amount exceeds spender allowance\""
                                  },
                                  "value": "Uni::transferFrom: transfer amount exceeds spender allowance"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_136758788d48ec4d9744ba8c2136a9c9406d6c92cd4a81eff0de4942b636db13",
                                    "typeString": "literal_string \"Uni::transferFrom: transfer amount exceeds spender allowance\""
                                  }
                                ],
                                "id": 3127,
                                "name": "sub96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3809,
                                "src": "9728:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                  "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                }
                              },
                              "id": 3131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9728:95:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9706:117:6"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3133,
                                    "name": "allowances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2582,
                                    "src": "9837:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$",
                                      "typeString": "mapping(address => mapping(address => uint96))"
                                    }
                                  },
                                  "id": 3136,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3134,
                                    "name": "src",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3086,
                                    "src": "9848:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9837:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                    "typeString": "mapping(address => uint96)"
                                  }
                                },
                                "id": 3137,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3135,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3096,
                                  "src": "9853:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9837:24:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 3138,
                                "name": "newAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3126,
                                "src": "9864:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "9837:39:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "id": 3140,
                            "nodeType": "ExpressionStatement",
                            "src": "9837:39:6"
                          },
                          {
                            "eventCall": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3142,
                                  "name": "src",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3086,
                                  "src": "9905:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3143,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3096,
                                  "src": "9910:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3144,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3126,
                                  "src": "9919:12:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                ],
                                "id": 3141,
                                "name": "Approval",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2662,
                                "src": "9896:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 3145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9896:36:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3146,
                            "nodeType": "EmitStatement",
                            "src": "9891:41:6"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3150,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3086,
                            "src": "9969:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3151,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3088,
                            "src": "9974:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3152,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3109,
                            "src": "9979:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 3149,
                          "name": "_transferTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3533,
                          "src": "9953:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$",
                            "typeString": "function (address,address,uint96)"
                          }
                        },
                        "id": 3153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9953:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3154,
                      "nodeType": "ExpressionStatement",
                      "src": "9953:33:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 3155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10003:4:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 3094,
                      "id": 3156,
                      "nodeType": "Return",
                      "src": "9996:11:6"
                    }
                  ]
                },
                "documentation": "@notice Transfer `amount` tokens from `src` to `dst`\n@param src The address of the source account\n@param dst The address of the destination account\n@param rawAmount The number of tokens to transfer\n@return Whether or not the transfer succeeded",
                "id": 3158,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3091,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3086,
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "scope": 3158,
                      "src": "9380:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3085,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9380:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3088,
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "scope": 3158,
                      "src": "9393:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3087,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9393:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3090,
                      "name": "rawAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3158,
                      "src": "9406:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3089,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9406:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9379:42:6"
                },
                "returnParameters": {
                  "id": 3094,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3093,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3158,
                      "src": "9440:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3092,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "9440:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9439:6:6"
                },
                "scope": 3822,
                "src": "9358:656:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3169,
                  "nodeType": "Block",
                  "src": "10200:56:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3164,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3837,
                              "src": "10227:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10227:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3166,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3160,
                            "src": "10239:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3163,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3465,
                          "src": "10217:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 3167,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10217:32:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "functionReturnParameters": 3162,
                      "id": 3168,
                      "nodeType": "Return",
                      "src": "10210:39:6"
                    }
                  ]
                },
                "documentation": "@notice Delegate votes from `msg.sender` to `delegatee`\n@param delegatee The address to delegate votes to",
                "id": 3170,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "delegate",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3161,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3160,
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "scope": 3170,
                      "src": "10174:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3159,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10174:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10173:19:6"
                },
                "returnParameters": {
                  "id": 3162,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10200:0:6"
                },
                "scope": 3822,
                "src": "10156:100:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3267,
                  "nodeType": "Block",
                  "src": "10784:672:6",
                  "statements": [
                    {
                      "assignments": [
                        3186
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3186,
                          "name": "domainSeparator",
                          "nodeType": "VariableDeclaration",
                          "scope": 3267,
                          "src": "10794:23:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 3185,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10794:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3203,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3190,
                                "name": "DOMAIN_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2610,
                                "src": "10841:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3193,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2555,
                                        "src": "10874:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 3192,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10868:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                        "typeString": "type(bytes storage pointer)"
                                      },
                                      "typeName": "bytes"
                                    },
                                    "id": 3194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10868:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3191,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3831,
                                  "src": "10858:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 3195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10858:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3196,
                                  "name": "getChainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3821,
                                  "src": "10882:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 3197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10882:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3199,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3873,
                                    "src": "10904:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Uni_$3822",
                                      "typeString": "contract Uni"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Uni_$3822",
                                      "typeString": "contract Uni"
                                    }
                                  ],
                                  "id": 3198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10896:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10896:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3188,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "10830:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 3189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10830:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 3201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10830:80:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3187,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "10820:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10820:91:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10794:117:6"
                    },
                    {
                      "assignments": [
                        3205
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3205,
                          "name": "structHash",
                          "nodeType": "VariableDeclaration",
                          "scope": 3267,
                          "src": "10921:18:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 3204,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10921:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3215,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3209,
                                "name": "DELEGATION_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2615,
                                "src": "10963:19:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3210,
                                "name": "delegatee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "10984:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3211,
                                "name": "nonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3174,
                                "src": "10995:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3212,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3176,
                                "src": "11002:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3207,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "10952:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 3208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10952:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 3213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10952:57:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3206,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "10942:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10942:68:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10921:89:6"
                    },
                    {
                      "assignments": [
                        3217
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3217,
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "scope": 3267,
                          "src": "11020:14:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 3216,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11020:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3226,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 3221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11064:10:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 3222,
                                "name": "domainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3186,
                                "src": "11076:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3223,
                                "name": "structHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3205,
                                "src": "11093:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3219,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3824,
                                "src": "11047:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 3220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11047:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 3224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11047:57:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3218,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3831,
                          "src": "11037:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 3225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11037:68:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11020:85:6"
                    },
                    {
                      "assignments": [
                        3228
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3228,
                          "name": "signatory",
                          "nodeType": "VariableDeclaration",
                          "scope": 3267,
                          "src": "11115:17:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3227,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11115:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3235,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3230,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "11145:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3231,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3178,
                            "src": "11153:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3232,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3180,
                            "src": "11156:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3233,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3182,
                            "src": "11159:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3229,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3829,
                          "src": "11135:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 3234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11135:26:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11115:46:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3237,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3228,
                              "src": "11179:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11200: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": 3238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11192:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 3240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11192:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "11179:23:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265",
                            "id": 3242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11204:39:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_41ba3897512438c3b52e550ef92ff91255600d9202c2b92b8893f625252dfabf",
                              "typeString": "literal_string \"Uni::delegateBySig: invalid signature\""
                            },
                            "value": "Uni::delegateBySig: invalid signature"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_41ba3897512438c3b52e550ef92ff91255600d9202c2b92b8893f625252dfabf",
                              "typeString": "literal_string \"Uni::delegateBySig: invalid signature\""
                            }
                          ],
                          "id": 3236,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "11171:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11171:73:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3244,
                      "nodeType": "ExpressionStatement",
                      "src": "11171:73:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3246,
                              "name": "nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3174,
                              "src": "11262:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "11271:19:6",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3247,
                                  "name": "nonces",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2624,
                                  "src": "11271:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3249,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3248,
                                  "name": "signatory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3228,
                                  "src": "11278:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "11271:17:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11262:28:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365",
                            "id": 3252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11292:35:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d126ba952f4f7443590dacc43a358ae6ad956133386dc92be4e1185a27d416b3",
                              "typeString": "literal_string \"Uni::delegateBySig: invalid nonce\""
                            },
                            "value": "Uni::delegateBySig: invalid nonce"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d126ba952f4f7443590dacc43a358ae6ad956133386dc92be4e1185a27d416b3",
                              "typeString": "literal_string \"Uni::delegateBySig: invalid nonce\""
                            }
                          ],
                          "id": 3245,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "11254:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11254:74:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3254,
                      "nodeType": "ExpressionStatement",
                      "src": "11254:74:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3256,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3839,
                              "src": "11346:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3257,
                              "name": "expiry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3176,
                              "src": "11353:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11346:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a64656c656761746542795369673a207369676e61747572652065787069726564",
                            "id": 3259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11361:39:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_287e5345cbd1fcc69d3d1d2165b5d321c6a9eb5b34f1162e798e9d80f3fdf12b",
                              "typeString": "literal_string \"Uni::delegateBySig: signature expired\""
                            },
                            "value": "Uni::delegateBySig: signature expired"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_287e5345cbd1fcc69d3d1d2165b5d321c6a9eb5b34f1162e798e9d80f3fdf12b",
                              "typeString": "literal_string \"Uni::delegateBySig: signature expired\""
                            }
                          ],
                          "id": 3255,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "11338:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11338:63:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3261,
                      "nodeType": "ExpressionStatement",
                      "src": "11338:63:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3263,
                            "name": "signatory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3228,
                            "src": "11428:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3264,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3172,
                            "src": "11439:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3262,
                          "name": "_delegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3465,
                          "src": "11418:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address)"
                          }
                        },
                        "id": 3265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11418:31:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "functionReturnParameters": 3184,
                      "id": 3266,
                      "nodeType": "Return",
                      "src": "11411:38:6"
                    }
                  ]
                },
                "documentation": "@notice Delegates votes from signatory to `delegatee`\n@param delegatee The address to delegate votes to\n@param nonce The contract state required to match the signature\n@param expiry The time at which to expire the signature\n@param v The recovery byte of the signature\n@param r Half of the ECDSA signature pair\n@param s Half of the ECDSA signature pair",
                "id": 3268,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "delegateBySig",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3183,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3172,
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "scope": 3268,
                      "src": "10702:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3171,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10702:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3174,
                      "name": "nonce",
                      "nodeType": "VariableDeclaration",
                      "scope": 3268,
                      "src": "10721:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3173,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10721:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3176,
                      "name": "expiry",
                      "nodeType": "VariableDeclaration",
                      "scope": 3268,
                      "src": "10733:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3175,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10733:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3178,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3268,
                      "src": "10746:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3177,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "10746:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3180,
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 3268,
                      "src": "10755:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3179,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10755:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3182,
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "scope": 3268,
                      "src": "10766:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3181,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10766:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10701:75:6"
                },
                "returnParameters": {
                  "id": 3184,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "10784:0:6"
                },
                "scope": 3822,
                "src": "10679:777:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3295,
                  "nodeType": "Block",
                  "src": "11723:146:6",
                  "statements": [
                    {
                      "assignments": [
                        3276
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3276,
                          "name": "nCheckpoints",
                          "nodeType": "VariableDeclaration",
                          "scope": 3295,
                          "src": "11733:19:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3275,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11733:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3280,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3277,
                          "name": "numCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2605,
                          "src": "11755:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                            "typeString": "mapping(address => uint32)"
                          }
                        },
                        "id": 3279,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3278,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3270,
                          "src": "11770:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11755:23:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11733:45:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 3283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3281,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3276,
                            "src": "11795:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11810:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11795:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11861:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 3293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "11795:67:6",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3284,
                                "name": "checkpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2601,
                                "src": "11814:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                }
                              },
                              "id": 3286,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3285,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "11826:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11814:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                              }
                            },
                            "id": 3290,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 3289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3287,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3276,
                                "src": "11835:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11850:1:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11835:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11814:38:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                              "typeString": "struct Uni.Checkpoint storage ref"
                            }
                          },
                          "id": 3291,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "votes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2594,
                          "src": "11814:44:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "functionReturnParameters": 3274,
                      "id": 3294,
                      "nodeType": "Return",
                      "src": "11788:74:6"
                    }
                  ]
                },
                "documentation": "@notice Gets the current votes balance for `account`\n@param account The address to get votes balance\n@return The number of current votes for `account`",
                "id": 3296,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getCurrentVotes",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3271,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3270,
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 3296,
                      "src": "11675:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3269,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11675:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11674:17:6"
                },
                "returnParameters": {
                  "id": 3274,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3273,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3296,
                      "src": "11715:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3272,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "11715:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11714:8:6"
                },
                "scope": 3822,
                "src": "11650:219:6",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3426,
                  "nodeType": "Block",
                  "src": "12378:1098:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3306,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3300,
                              "src": "12396:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3307,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3827,
                                "src": "12410:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 3308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12410:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12396:26:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564",
                            "id": 3310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12424:40:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_49a8c5a37f9a1453393e39114b211b704ebc96555b0cd38f42c3478bd0b9f9d2",
                              "typeString": "literal_string \"Uni::getPriorVotes: not yet determined\""
                            },
                            "value": "Uni::getPriorVotes: not yet determined"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_49a8c5a37f9a1453393e39114b211b704ebc96555b0cd38f42c3478bd0b9f9d2",
                              "typeString": "literal_string \"Uni::getPriorVotes: not yet determined\""
                            }
                          ],
                          "id": 3305,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "12388:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12388:77:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3312,
                      "nodeType": "ExpressionStatement",
                      "src": "12388:77:6"
                    },
                    {
                      "assignments": [
                        3314
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3314,
                          "name": "nCheckpoints",
                          "nodeType": "VariableDeclaration",
                          "scope": 3426,
                          "src": "12476:19:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3313,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "12476:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3318,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3315,
                          "name": "numCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2605,
                          "src": "12498:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                            "typeString": "mapping(address => uint32)"
                          }
                        },
                        "id": 3317,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3316,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3298,
                          "src": "12513:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12498:23:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12476:45:6"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 3321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3319,
                          "name": "nCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3314,
                          "src": "12535:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12551:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12535:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3325,
                      "nodeType": "IfStatement",
                      "src": "12531:56:6",
                      "trueBody": {
                        "id": 3324,
                        "nodeType": "Block",
                        "src": "12554:33:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12575:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "functionReturnParameters": 3304,
                            "id": 3323,
                            "nodeType": "Return",
                            "src": "12568:8:6"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3326,
                                "name": "checkpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2601,
                                "src": "12644:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                }
                              },
                              "id": 3328,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3327,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3298,
                                "src": "12656:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12644:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                              }
                            },
                            "id": 3332,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 3331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3329,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3314,
                                "src": "12665:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12680:1:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "12665:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12644:38:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                              "typeString": "struct Uni.Checkpoint storage ref"
                            }
                          },
                          "id": 3333,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "fromBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2592,
                          "src": "12644:48:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3334,
                          "name": "blockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3300,
                          "src": "12696:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12644:63:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3346,
                      "nodeType": "IfStatement",
                      "src": "12640:145:6",
                      "trueBody": {
                        "id": 3345,
                        "nodeType": "Block",
                        "src": "12709:76:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3336,
                                    "name": "checkpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2601,
                                    "src": "12730:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                      "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 3338,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3337,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3298,
                                    "src": "12742:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12730:20:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                    "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                                  }
                                },
                                "id": 3342,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 3341,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3339,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3314,
                                    "src": "12751:12:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 3340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12766:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "12751:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12730:38:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                  "typeString": "struct Uni.Checkpoint storage ref"
                                }
                              },
                              "id": 3343,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2594,
                              "src": "12730:44:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "functionReturnParameters": 3304,
                            "id": 3344,
                            "nodeType": "Return",
                            "src": "12723:51:6"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3347,
                                "name": "checkpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2601,
                                "src": "12843:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                }
                              },
                              "id": 3349,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3348,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3298,
                                "src": "12855:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12843:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                              }
                            },
                            "id": 3351,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12864:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12843:23:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                              "typeString": "struct Uni.Checkpoint storage ref"
                            }
                          },
                          "id": 3352,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "fromBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2592,
                          "src": "12843:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3353,
                          "name": "blockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3300,
                          "src": "12879:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12843:47:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3358,
                      "nodeType": "IfStatement",
                      "src": "12839:86:6",
                      "trueBody": {
                        "id": 3357,
                        "nodeType": "Block",
                        "src": "12892:33:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12913:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "functionReturnParameters": 3304,
                            "id": 3356,
                            "nodeType": "Return",
                            "src": "12906:8:6"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        3360
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3360,
                          "name": "lower",
                          "nodeType": "VariableDeclaration",
                          "scope": 3426,
                          "src": "12935:12:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3359,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "12935:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3362,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12950:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12935:16:6"
                    },
                    {
                      "assignments": [
                        3364
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3364,
                          "name": "upper",
                          "nodeType": "VariableDeclaration",
                          "scope": 3426,
                          "src": "12961:12:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3363,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "12961:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3368,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 3367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3365,
                          "name": "nCheckpoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3314,
                          "src": "12976:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12991:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "12976:16:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12961:31:6"
                    },
                    {
                      "body": {
                        "id": 3417,
                        "nodeType": "Block",
                        "src": "13024:396:6",
                        "statements": [
                          {
                            "assignments": [
                              3373
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3373,
                                "name": "center",
                                "nodeType": "VariableDeclaration",
                                "scope": 3417,
                                "src": "13038:13:6",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "typeName": {
                                  "id": 3372,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13038:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3382,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 3381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3374,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3364,
                                "src": "13054:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 3380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 3377,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3375,
                                        "name": "upper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3364,
                                        "src": "13063:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3376,
                                        "name": "lower",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3360,
                                        "src": "13071:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "13063:13:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "id": 3378,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13062:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 3379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13080:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "13062:19:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "13054:27:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13038:43:6"
                          },
                          {
                            "assignments": [
                              3384
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3384,
                                "name": "cp",
                                "nodeType": "VariableDeclaration",
                                "scope": 3417,
                                "src": "13122:20:6",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$2595_memory_ptr",
                                  "typeString": "struct Uni.Checkpoint"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3383,
                                  "name": "Checkpoint",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 2595,
                                  "src": "13122:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$2595_storage_ptr",
                                    "typeString": "struct Uni.Checkpoint"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3390,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3385,
                                  "name": "checkpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2601,
                                  "src": "13145:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                    "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                  }
                                },
                                "id": 3387,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3386,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3298,
                                  "src": "13157:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13145:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                  "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                                }
                              },
                              "id": 3389,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3388,
                                "name": "center",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3373,
                                "src": "13166:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13145:28:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                "typeString": "struct Uni.Checkpoint storage ref"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13122:51:6"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3391,
                                  "name": "cp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3384,
                                  "src": "13191:2:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$2595_memory_ptr",
                                    "typeString": "struct Uni.Checkpoint memory"
                                  }
                                },
                                "id": 3392,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "fromBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2592,
                                "src": "13191:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3393,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3300,
                                "src": "13207:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13191:27:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3399,
                                    "name": "cp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3384,
                                    "src": "13278:2:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$2595_memory_ptr",
                                      "typeString": "struct Uni.Checkpoint memory"
                                    }
                                  },
                                  "id": 3400,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "fromBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2592,
                                  "src": "13278:12:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3401,
                                  "name": "blockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3300,
                                  "src": "13293:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13278:26:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3414,
                                "nodeType": "Block",
                                "src": "13359:51:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3408,
                                        "name": "upper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3364,
                                        "src": "13377:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        "id": 3411,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 3409,
                                          "name": "center",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3373,
                                          "src": "13385:6:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 3410,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13394:1:6",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "13385:10:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "13377:18:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "id": 3413,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13377:18:6"
                                  }
                                ]
                              },
                              "id": 3415,
                              "nodeType": "IfStatement",
                              "src": "13274:136:6",
                              "trueBody": {
                                "id": 3407,
                                "nodeType": "Block",
                                "src": "13306:47:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3405,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3403,
                                        "name": "lower",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3360,
                                        "src": "13324:5:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 3404,
                                        "name": "center",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3373,
                                        "src": "13332:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "13324:14:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "id": 3406,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13324:14:6"
                                  }
                                ]
                              }
                            },
                            "id": 3416,
                            "nodeType": "IfStatement",
                            "src": "13187:223:6",
                            "trueBody": {
                              "id": 3398,
                              "nodeType": "Block",
                              "src": "13220:48:6",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3395,
                                      "name": "cp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3384,
                                      "src": "13245:2:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Checkpoint_$2595_memory_ptr",
                                        "typeString": "struct Uni.Checkpoint memory"
                                      }
                                    },
                                    "id": 3396,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2594,
                                    "src": "13245:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "functionReturnParameters": 3304,
                                  "id": 3397,
                                  "nodeType": "Return",
                                  "src": "13238:15:6"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 3371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3369,
                          "name": "upper",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3364,
                          "src": "13009:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3370,
                          "name": "lower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3360,
                          "src": "13017:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "13009:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3418,
                      "nodeType": "WhileStatement",
                      "src": "13002:418:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3419,
                              "name": "checkpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2601,
                              "src": "13436:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                              }
                            },
                            "id": 3421,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3420,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3298,
                              "src": "13448:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13436:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                              "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                            }
                          },
                          "id": 3423,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3422,
                            "name": "lower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3360,
                            "src": "13457:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13436:27:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                            "typeString": "struct Uni.Checkpoint storage ref"
                          }
                        },
                        "id": 3424,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2594,
                        "src": "13436:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "functionReturnParameters": 3304,
                      "id": 3425,
                      "nodeType": "Return",
                      "src": "13429:40:6"
                    }
                  ]
                },
                "documentation": "@notice Determine the prior number of votes for an account as of a block number\n@dev Block number must be a finalized block or else this function will revert to prevent misinformation.\n@param account The address of the account to check\n@param blockNumber The block number to get the vote balance at\n@return The number of votes the account had as of the given block",
                "id": 3427,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getPriorVotes",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3301,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3298,
                      "name": "account",
                      "nodeType": "VariableDeclaration",
                      "scope": 3427,
                      "src": "12314:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3297,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12314:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3300,
                      "name": "blockNumber",
                      "nodeType": "VariableDeclaration",
                      "scope": 3427,
                      "src": "12331:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3299,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12331:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12313:35:6"
                },
                "returnParameters": {
                  "id": 3304,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3303,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3427,
                      "src": "12370:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3302,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "12370:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12369:8:6"
                },
                "scope": 3822,
                "src": "12291:1185:6",
                "stateMutability": "view",
                "superFunction": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3464,
                  "nodeType": "Block",
                  "src": "13548:301:6",
                  "statements": [
                    {
                      "assignments": [
                        3435
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3435,
                          "name": "currentDelegate",
                          "nodeType": "VariableDeclaration",
                          "scope": 3464,
                          "src": "13558:23:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3434,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13558:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3439,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3436,
                          "name": "delegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2590,
                          "src": "13584:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 3438,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3437,
                          "name": "delegator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3429,
                          "src": "13594:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13584:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13558:46:6"
                    },
                    {
                      "assignments": [
                        3441
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3441,
                          "name": "delegatorBalance",
                          "nodeType": "VariableDeclaration",
                          "scope": 3464,
                          "src": "13614:23:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 3440,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "13614:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3445,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3442,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2586,
                          "src": "13640:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                            "typeString": "mapping(address => uint96)"
                          }
                        },
                        "id": 3444,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3443,
                          "name": "delegator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3429,
                          "src": "13649:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13640:19:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13614:45:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3446,
                            "name": "delegates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2590,
                            "src": "13669:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 3448,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3447,
                            "name": "delegator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3429,
                            "src": "13679:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "13669:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 3449,
                          "name": "delegatee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3431,
                          "src": "13692:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "13669:32:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3451,
                      "nodeType": "ExpressionStatement",
                      "src": "13669:32:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3453,
                            "name": "delegator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3429,
                            "src": "13733:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3454,
                            "name": "currentDelegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3435,
                            "src": "13744:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3455,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3431,
                            "src": "13761:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3452,
                          "name": "DelegateChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2638,
                          "src": "13717:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                            "typeString": "function (address,address,address)"
                          }
                        },
                        "id": 3456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13717:54:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3457,
                      "nodeType": "EmitStatement",
                      "src": "13712:59:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3459,
                            "name": "currentDelegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3435,
                            "src": "13797:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3460,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3431,
                            "src": "13814:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3461,
                            "name": "delegatorBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3441,
                            "src": "13825:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 3458,
                          "name": "_moveDelegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3640,
                          "src": "13782:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$",
                            "typeString": "function (address,address,uint96)"
                          }
                        },
                        "id": 3462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13782:60:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3463,
                      "nodeType": "ExpressionStatement",
                      "src": "13782:60:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3465,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_delegate",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3432,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3429,
                      "name": "delegator",
                      "nodeType": "VariableDeclaration",
                      "scope": 3465,
                      "src": "13501:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3428,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13501:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3431,
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "scope": 3465,
                      "src": "13520:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3430,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13520:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13500:38:6"
                },
                "returnParameters": {
                  "id": 3433,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13548:0:6"
                },
                "scope": 3822,
                "src": "13482:367:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3532,
                  "nodeType": "Block",
                  "src": "13930:526:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3475,
                              "name": "src",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3467,
                              "src": "13948:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13963: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": 3476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13955:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 3478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13955:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "13948:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373",
                            "id": 3480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13967:61:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_de7e0a100b60a11ede47141c5b3cbe581ee85f280a75b7fbf40a7340eb978ea6",
                              "typeString": "literal_string \"Uni::_transferTokens: cannot transfer from the zero address\""
                            },
                            "value": "Uni::_transferTokens: cannot transfer from the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_de7e0a100b60a11ede47141c5b3cbe581ee85f280a75b7fbf40a7340eb978ea6",
                              "typeString": "literal_string \"Uni::_transferTokens: cannot transfer from the zero address\""
                            }
                          ],
                          "id": 3474,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "13940:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3481,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13940:89:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3482,
                      "nodeType": "ExpressionStatement",
                      "src": "13940:89:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3484,
                              "name": "dst",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3469,
                              "src": "14047:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14062: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": 3485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14054:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 3487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14054:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "14047:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373",
                            "id": 3489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14066:59:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8cdff6d324f122ca5cad9ec8d91ca56840c45dd7fc048a003b94957b6f733086",
                              "typeString": "literal_string \"Uni::_transferTokens: cannot transfer to the zero address\""
                            },
                            "value": "Uni::_transferTokens: cannot transfer to the zero address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8cdff6d324f122ca5cad9ec8d91ca56840c45dd7fc048a003b94957b6f733086",
                              "typeString": "literal_string \"Uni::_transferTokens: cannot transfer to the zero address\""
                            }
                          ],
                          "id": 3483,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "14039:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14039:87:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3491,
                      "nodeType": "ExpressionStatement",
                      "src": "14039:87:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3492,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "14137:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                              "typeString": "mapping(address => uint96)"
                            }
                          },
                          "id": 3494,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3493,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3467,
                            "src": "14146:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "14137:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3496,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2586,
                                "src": "14159:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                  "typeString": "mapping(address => uint96)"
                                }
                              },
                              "id": 3498,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3497,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3467,
                                "src": "14168:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14159:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3499,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3471,
                              "src": "14174:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                              "id": 3500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14182:55:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3230ba2cb739b33589720b8a5892642694535e935234939514431ff16907d24a",
                                "typeString": "literal_string \"Uni::_transferTokens: transfer amount exceeds balance\""
                              },
                              "value": "Uni::_transferTokens: transfer amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3230ba2cb739b33589720b8a5892642694535e935234939514431ff16907d24a",
                                "typeString": "literal_string \"Uni::_transferTokens: transfer amount exceeds balance\""
                              }
                            ],
                            "id": 3495,
                            "name": "sub96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3809,
                            "src": "14153:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 3501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14153:85:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "14137:101:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "id": 3503,
                      "nodeType": "ExpressionStatement",
                      "src": "14137:101:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3504,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2586,
                            "src": "14248:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                              "typeString": "mapping(address => uint96)"
                            }
                          },
                          "id": 3506,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3505,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3469,
                            "src": "14257:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "14248:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3508,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2586,
                                "src": "14270:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                  "typeString": "mapping(address => uint96)"
                                }
                              },
                              "id": 3510,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3509,
                                "name": "dst",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3469,
                                "src": "14279:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14270:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3511,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3471,
                              "src": "14285:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773",
                              "id": 3512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14293:49:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f838ee8b15c3d07740bb9b304b8146ec63bb435a7703825b5e6424ee2072674a",
                                "typeString": "literal_string \"Uni::_transferTokens: transfer amount overflows\""
                              },
                              "value": "Uni::_transferTokens: transfer amount overflows"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f838ee8b15c3d07740bb9b304b8146ec63bb435a7703825b5e6424ee2072674a",
                                "typeString": "literal_string \"Uni::_transferTokens: transfer amount overflows\""
                              }
                            ],
                            "id": 3507,
                            "name": "add96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3786,
                            "src": "14264:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 3513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14264:79:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "14248:95:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "id": 3515,
                      "nodeType": "ExpressionStatement",
                      "src": "14248:95:6"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3517,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3467,
                            "src": "14367:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3518,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3469,
                            "src": "14372:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3519,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3471,
                            "src": "14377:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 3516,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2654,
                          "src": "14358:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14358:26:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3521,
                      "nodeType": "EmitStatement",
                      "src": "14353:31:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3523,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2590,
                              "src": "14410:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3525,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3524,
                              "name": "src",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3467,
                              "src": "14420:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14410:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3526,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2590,
                              "src": "14426:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3528,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3527,
                              "name": "dst",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3469,
                              "src": "14436:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14426:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3529,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3471,
                            "src": "14442:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 3522,
                          "name": "_moveDelegates",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3640,
                          "src": "14395:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$",
                            "typeString": "function (address,address,uint96)"
                          }
                        },
                        "id": 3530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14395:54:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3531,
                      "nodeType": "ExpressionStatement",
                      "src": "14395:54:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3533,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transferTokens",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3472,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3467,
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "scope": 3533,
                      "src": "13880:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3466,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13880:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3469,
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "scope": 3533,
                      "src": "13893:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3468,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13893:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3471,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3533,
                      "src": "13906:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3470,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "13906:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13879:41:6"
                },
                "returnParameters": {
                  "id": 3473,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13930:0:6"
                },
                "scope": 3822,
                "src": "13855:601:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3639,
                  "nodeType": "Block",
                  "src": "14542:841:6",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3542,
                            "name": "srcRep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3535,
                            "src": "14556:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3543,
                            "name": "dstRep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "14566:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14556:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 3547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3545,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3539,
                            "src": "14576:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14585:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14576:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14556:30:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3638,
                      "nodeType": "IfStatement",
                      "src": "14552:825:6",
                      "trueBody": {
                        "id": 3637,
                        "nodeType": "Block",
                        "src": "14588:789:6",
                        "statements": [
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3549,
                                "name": "srcRep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3535,
                                "src": "14606:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3551,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14624: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": 3550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14616:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14616:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14606:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3592,
                            "nodeType": "IfStatement",
                            "src": "14602:376:6",
                            "trueBody": {
                              "id": 3591,
                              "nodeType": "Block",
                              "src": "14628:350:6",
                              "statements": [
                                {
                                  "assignments": [
                                    3555
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3555,
                                      "name": "srcRepNum",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3591,
                                      "src": "14646:16:6",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "typeName": {
                                        "id": 3554,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14646:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3559,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3556,
                                      "name": "numCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2605,
                                      "src": "14665:14:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                        "typeString": "mapping(address => uint32)"
                                      }
                                    },
                                    "id": 3558,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3557,
                                      "name": "srcRep",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3535,
                                      "src": "14680:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14665:22:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14646:41:6"
                                },
                                {
                                  "assignments": [
                                    3561
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3561,
                                      "name": "srcRepOld",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3591,
                                      "src": "14705:16:6",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "typeName": {
                                        "id": 3560,
                                        "name": "uint96",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14705:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3575,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 3564,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3562,
                                        "name": "srcRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3555,
                                        "src": "14724:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3563,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14736:1:6",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "14724:13:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3573,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14783:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "id": 3574,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "14724:60:6",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 3565,
                                            "name": "checkpoints",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2601,
                                            "src": "14740:11:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                              "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                            }
                                          },
                                          "id": 3567,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 3566,
                                            "name": "srcRep",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3535,
                                            "src": "14752:6:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "14740:19:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                            "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                                          }
                                        },
                                        "id": 3571,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 3570,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 3568,
                                            "name": "srcRepNum",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3555,
                                            "src": "14760:9:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 3569,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14772:1:6",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "14760:13:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "14740:34:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                          "typeString": "struct Uni.Checkpoint storage ref"
                                        }
                                      },
                                      "id": 3572,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "votes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2594,
                                      "src": "14740:40:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14705:79:6"
                                },
                                {
                                  "assignments": [
                                    3577
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3577,
                                      "name": "srcRepNew",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3591,
                                      "src": "14802:16:6",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "typeName": {
                                        "id": 3576,
                                        "name": "uint96",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14802:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3583,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3579,
                                        "name": "srcRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3561,
                                        "src": "14827:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3580,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3539,
                                        "src": "14838:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773",
                                        "id": 3581,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14846:41:6",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_8f9e8e1e6816d4a772d233c08b8292a576126f7dbd1d9b7cd30ef07f7c3d78d2",
                                          "typeString": "literal_string \"Uni::_moveVotes: vote amount underflows\""
                                        },
                                        "value": "Uni::_moveVotes: vote amount underflows"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_8f9e8e1e6816d4a772d233c08b8292a576126f7dbd1d9b7cd30ef07f7c3d78d2",
                                          "typeString": "literal_string \"Uni::_moveVotes: vote amount underflows\""
                                        }
                                      ],
                                      "id": 3578,
                                      "name": "sub96",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3809,
                                      "src": "14821:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                        "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                      }
                                    },
                                    "id": 3582,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14821:67:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14802:86:6"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3585,
                                        "name": "srcRep",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3535,
                                        "src": "14923:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3586,
                                        "name": "srcRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3555,
                                        "src": "14931:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3587,
                                        "name": "srcRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3561,
                                        "src": "14942:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3588,
                                        "name": "srcRepNew",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3577,
                                        "src": "14953:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      ],
                                      "id": 3584,
                                      "name": "_writeCheckpoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3713,
                                      "src": "14906:16:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint96_$_t_uint96_$returns$__$",
                                        "typeString": "function (address,uint32,uint96,uint96)"
                                      }
                                    },
                                    "id": 3589,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14906:57:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3590,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14906:57:6"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3593,
                                "name": "dstRep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3537,
                                "src": "14996:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3595,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15014: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": 3594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15006:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15006:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14996:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 3636,
                            "nodeType": "IfStatement",
                            "src": "14992:375:6",
                            "trueBody": {
                              "id": 3635,
                              "nodeType": "Block",
                              "src": "15018:349:6",
                              "statements": [
                                {
                                  "assignments": [
                                    3599
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3599,
                                      "name": "dstRepNum",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3635,
                                      "src": "15036:16:6",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "typeName": {
                                        "id": 3598,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15036:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3603,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3600,
                                      "name": "numCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2605,
                                      "src": "15055:14:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                        "typeString": "mapping(address => uint32)"
                                      }
                                    },
                                    "id": 3602,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3601,
                                      "name": "dstRep",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3537,
                                      "src": "15070:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15055:22:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "15036:41:6"
                                },
                                {
                                  "assignments": [
                                    3605
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3605,
                                      "name": "dstRepOld",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3635,
                                      "src": "15095:16:6",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "typeName": {
                                        "id": 3604,
                                        "name": "uint96",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15095:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3619,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 3608,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3606,
                                        "name": "dstRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3599,
                                        "src": "15114:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3607,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15126:1:6",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "15114:13:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3617,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "15173:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "id": 3618,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "15114:60:6",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 3609,
                                            "name": "checkpoints",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2601,
                                            "src": "15130:11:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                              "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                            }
                                          },
                                          "id": 3611,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 3610,
                                            "name": "dstRep",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3537,
                                            "src": "15142:6:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "15130:19:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                            "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                                          }
                                        },
                                        "id": 3615,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 3614,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 3612,
                                            "name": "dstRepNum",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3599,
                                            "src": "15150:9:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 3613,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "15162:1:6",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "15150:13:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "15130:34:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                          "typeString": "struct Uni.Checkpoint storage ref"
                                        }
                                      },
                                      "id": 3616,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "votes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2594,
                                      "src": "15130:40:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "15095:79:6"
                                },
                                {
                                  "assignments": [
                                    3621
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3621,
                                      "name": "dstRepNew",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3635,
                                      "src": "15192:16:6",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "typeName": {
                                        "id": 3620,
                                        "name": "uint96",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15192:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3627,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3623,
                                        "name": "dstRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3605,
                                        "src": "15217:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3624,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3539,
                                        "src": "15228:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773",
                                        "id": 3625,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15236:40:6",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_5c6c891434a3c5951db59f5fe43d566b04bf54e07bc444b7f9f72601e608dc42",
                                          "typeString": "literal_string \"Uni::_moveVotes: vote amount overflows\""
                                        },
                                        "value": "Uni::_moveVotes: vote amount overflows"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_5c6c891434a3c5951db59f5fe43d566b04bf54e07bc444b7f9f72601e608dc42",
                                          "typeString": "literal_string \"Uni::_moveVotes: vote amount overflows\""
                                        }
                                      ],
                                      "id": 3622,
                                      "name": "add96",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3786,
                                      "src": "15211:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                        "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                      }
                                    },
                                    "id": 3626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15211:66:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "15192:85:6"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3629,
                                        "name": "dstRep",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3537,
                                        "src": "15312:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3630,
                                        "name": "dstRepNum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3599,
                                        "src": "15320:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3631,
                                        "name": "dstRepOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3605,
                                        "src": "15331:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3632,
                                        "name": "dstRepNew",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3621,
                                        "src": "15342:9:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      ],
                                      "id": 3628,
                                      "name": "_writeCheckpoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3713,
                                      "src": "15295:16:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint96_$_t_uint96_$returns$__$",
                                        "typeString": "function (address,uint32,uint96,uint96)"
                                      }
                                    },
                                    "id": 3633,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15295:57:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3634,
                                  "nodeType": "ExpressionStatement",
                                  "src": "15295:57:6"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 3640,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_moveDelegates",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3540,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3535,
                      "name": "srcRep",
                      "nodeType": "VariableDeclaration",
                      "scope": 3640,
                      "src": "14486:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3534,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14486:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3537,
                      "name": "dstRep",
                      "nodeType": "VariableDeclaration",
                      "scope": 3640,
                      "src": "14502:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3536,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14502:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3539,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3640,
                      "src": "14518:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3538,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "14518:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "14485:47:6"
                },
                "returnParameters": {
                  "id": 3541,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "14542:0:6"
                },
                "scope": 3822,
                "src": "14462:921:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3712,
                  "nodeType": "Block",
                  "src": "15498:508:6",
                  "statements": [
                    {
                      "assignments": [
                        3652
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3652,
                          "name": "blockNumber",
                          "nodeType": "VariableDeclaration",
                          "scope": 3712,
                          "src": "15506:18:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 3651,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "15506:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3658,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3654,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3827,
                              "src": "15534:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 3655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15534:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473",
                            "id": 3656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15548:53:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_66157ef8d926a3327823fecd4ce53edfcb6533c37c90dc98acfb91e4f2854725",
                              "typeString": "literal_string \"Uni::_writeCheckpoint: block number exceeds 32 bits\""
                            },
                            "value": "Uni::_writeCheckpoint: block number exceeds 32 bits"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_66157ef8d926a3327823fecd4ce53edfcb6533c37c90dc98acfb91e4f2854725",
                              "typeString": "literal_string \"Uni::_writeCheckpoint: block number exceeds 32 bits\""
                            }
                          ],
                          "id": 3653,
                          "name": "safe32",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3736,
                          "src": "15527:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                            "typeString": "function (uint256,string memory) pure returns (uint32)"
                          }
                        },
                        "id": 3657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15527:75:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15506:96:6"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 3661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3659,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3644,
                            "src": "15615:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15630:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15615:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 3671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3662,
                                  "name": "checkpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2601,
                                  "src": "15635:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                    "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                  }
                                },
                                "id": 3664,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3663,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3642,
                                  "src": "15647:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15635:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                  "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                                }
                              },
                              "id": 3668,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 3667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3665,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3644,
                                  "src": "15658:12:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3666,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15673:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "15658:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15635:40:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                "typeString": "struct Uni.Checkpoint storage ref"
                              }
                            },
                            "id": 3669,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2592,
                            "src": "15635:50:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3670,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3652,
                            "src": "15689:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "15635:65:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "15615:85:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 3704,
                        "nodeType": "Block",
                        "src": "15786:149:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3685,
                                    "name": "checkpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2601,
                                    "src": "15798:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                      "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 3688,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3686,
                                    "name": "delegatee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3642,
                                    "src": "15810:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15798:22:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                    "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                                  }
                                },
                                "id": 3689,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3687,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3644,
                                  "src": "15821:12:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "15798:36:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                  "typeString": "struct Uni.Checkpoint storage ref"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3691,
                                    "name": "blockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3652,
                                    "src": "15848:11:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3692,
                                    "name": "newVotes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3648,
                                    "src": "15861:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 3690,
                                  "name": "Checkpoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2595,
                                  "src": "15837:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_Checkpoint_$2595_storage_ptr_$",
                                    "typeString": "type(struct Uni.Checkpoint storage pointer)"
                                  }
                                },
                                "id": 3693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15837:33:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$2595_memory",
                                  "typeString": "struct Uni.Checkpoint memory"
                                }
                              },
                              "src": "15798:72:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                "typeString": "struct Uni.Checkpoint storage ref"
                              }
                            },
                            "id": 3695,
                            "nodeType": "ExpressionStatement",
                            "src": "15798:72:6"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3696,
                                  "name": "numCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2605,
                                  "src": "15882:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                    "typeString": "mapping(address => uint32)"
                                  }
                                },
                                "id": 3698,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3697,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3642,
                                  "src": "15897:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "15882:25:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 3701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3699,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3644,
                                  "src": "15910:12:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15925:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "15910:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "15882:44:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "id": 3703,
                            "nodeType": "ExpressionStatement",
                            "src": "15882:44:6"
                          }
                        ]
                      },
                      "id": 3705,
                      "nodeType": "IfStatement",
                      "src": "15611:324:6",
                      "trueBody": {
                        "id": 3684,
                        "nodeType": "Block",
                        "src": "15702:78:6",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3673,
                                      "name": "checkpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2601,
                                      "src": "15714:11:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$_$",
                                        "typeString": "mapping(address => mapping(uint32 => struct Uni.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 3678,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3674,
                                      "name": "delegatee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3642,
                                      "src": "15726:9:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15714:22:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$2595_storage_$",
                                      "typeString": "mapping(uint32 => struct Uni.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 3679,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 3677,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3675,
                                      "name": "nCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3644,
                                      "src": "15737:12:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3676,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "15752:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "15737:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15714:40:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$2595_storage",
                                    "typeString": "struct Uni.Checkpoint storage ref"
                                  }
                                },
                                "id": 3680,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "votes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2594,
                                "src": "15714:46:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 3681,
                                "name": "newVotes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3648,
                                "src": "15763:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "15714:57:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "id": 3683,
                            "nodeType": "ExpressionStatement",
                            "src": "15714:57:6"
                          }
                        ]
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3707,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3642,
                            "src": "15969:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3708,
                            "name": "oldVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3646,
                            "src": "15980:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3709,
                            "name": "newVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3648,
                            "src": "15990:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          ],
                          "id": 3706,
                          "name": "DelegateVotesChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2646,
                          "src": "15948:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,uint256)"
                          }
                        },
                        "id": 3710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15948:51:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3711,
                      "nodeType": "EmitStatement",
                      "src": "15943:56:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3713,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_writeCheckpoint",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3649,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3642,
                      "name": "delegatee",
                      "nodeType": "VariableDeclaration",
                      "scope": 3713,
                      "src": "15415:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3641,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15415:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3644,
                      "name": "nCheckpoints",
                      "nodeType": "VariableDeclaration",
                      "scope": 3713,
                      "src": "15434:19:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3643,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15434:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3646,
                      "name": "oldVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 3713,
                      "src": "15455:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3645,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "15455:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3648,
                      "name": "newVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 3713,
                      "src": "15472:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3647,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "15472:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15414:74:6"
                },
                "returnParameters": {
                  "id": 3650,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "15498:0:6"
                },
                "scope": 3822,
                "src": "15389:617:6",
                "stateMutability": "nonpayable",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3735,
                  "nodeType": "Block",
                  "src": "16095:75:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3723,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3715,
                              "src": "16113:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              },
                              "id": 3726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 3724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16117:1:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 3725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16120:2:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "16117:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              }
                            },
                            "src": "16113:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3728,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3717,
                            "src": "16124:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 3722,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "16105:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16105:32:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3730,
                      "nodeType": "ExpressionStatement",
                      "src": "16105:32:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3732,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3715,
                            "src": "16161:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "16154:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint32_$",
                            "typeString": "type(uint32)"
                          },
                          "typeName": "uint32"
                        },
                        "id": 3733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16154:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "functionReturnParameters": 3721,
                      "id": 3734,
                      "nodeType": "Return",
                      "src": "16147:16:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3736,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safe32",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3718,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3715,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 3736,
                      "src": "16028:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3714,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16028:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3717,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 3736,
                      "src": "16036:26:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 3716,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "16036:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16027:36:6"
                },
                "returnParameters": {
                  "id": 3721,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3720,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3736,
                      "src": "16087:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 3719,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "16087:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16086:8:6"
                },
                "scope": 3822,
                "src": "16012:158:6",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3758,
                  "nodeType": "Block",
                  "src": "16259:75:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3746,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3738,
                              "src": "16277:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                "typeString": "int_const 79228162514264337593543950336"
                              },
                              "id": 3749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 3747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16281:1:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3936",
                                "id": 3748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16284:2:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_96_by_1",
                                  "typeString": "int_const 96"
                                },
                                "value": "96"
                              },
                              "src": "16281:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                "typeString": "int_const 79228162514264337593543950336"
                              }
                            },
                            "src": "16277:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3751,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3740,
                            "src": "16288:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 3745,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "16269:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16269:32:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3753,
                      "nodeType": "ExpressionStatement",
                      "src": "16269:32:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3755,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3738,
                            "src": "16325:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "16318:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint96_$",
                            "typeString": "type(uint96)"
                          },
                          "typeName": "uint96"
                        },
                        "id": 3756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16318:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "functionReturnParameters": 3744,
                      "id": 3757,
                      "nodeType": "Return",
                      "src": "16311:16:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3759,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safe96",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3741,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3738,
                      "name": "n",
                      "nodeType": "VariableDeclaration",
                      "scope": 3759,
                      "src": "16192:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3737,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16192:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3740,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 3759,
                      "src": "16200:26:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 3739,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "16200:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16191:36:6"
                },
                "returnParameters": {
                  "id": 3744,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3743,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3759,
                      "src": "16251:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3742,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "16251:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16250:8:6"
                },
                "scope": 3822,
                "src": "16176:158:6",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3785,
                  "nodeType": "Block",
                  "src": "16434:90:6",
                  "statements": [
                    {
                      "assignments": [
                        3771
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3771,
                          "name": "c",
                          "nodeType": "VariableDeclaration",
                          "scope": 3785,
                          "src": "16444:8:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "typeName": {
                            "id": 3770,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "16444:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3775,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "id": 3774,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3772,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3761,
                          "src": "16455:1:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3773,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3763,
                          "src": "16459:1:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "16455:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16444:16:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 3779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3777,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3771,
                              "src": "16478:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3778,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3761,
                              "src": "16483:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "16478:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3780,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3765,
                            "src": "16486:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 3776,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "16470:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16470:29:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3782,
                      "nodeType": "ExpressionStatement",
                      "src": "16470:29:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3783,
                        "name": "c",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3771,
                        "src": "16516:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "functionReturnParameters": 3769,
                      "id": 3784,
                      "nodeType": "Return",
                      "src": "16509:8:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3786,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add96",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3766,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3761,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 3786,
                      "src": "16355:8:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3760,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "16355:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3763,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 3786,
                      "src": "16365:8:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3762,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "16365:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3765,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 3786,
                      "src": "16375:26:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 3764,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "16375:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16354:48:6"
                },
                "returnParameters": {
                  "id": 3769,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3768,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3786,
                      "src": "16426:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3767,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "16426:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16425:8:6"
                },
                "scope": 3822,
                "src": "16340:184:6",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3808,
                  "nodeType": "Block",
                  "src": "16624:68:6",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 3800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3798,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3790,
                              "src": "16642:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3799,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3788,
                              "src": "16647:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "16642:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3801,
                            "name": "errorMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3792,
                            "src": "16650:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 3797,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3840,
                            3841
                          ],
                          "referencedDeclaration": 3841,
                          "src": "16634:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3802,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16634:29:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3803,
                      "nodeType": "ExpressionStatement",
                      "src": "16634:29:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "id": 3806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3804,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3788,
                          "src": "16680:1:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3805,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3790,
                          "src": "16684:1:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "src": "16680:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "functionReturnParameters": 3796,
                      "id": 3807,
                      "nodeType": "Return",
                      "src": "16673:12:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3809,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub96",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3793,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3788,
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 3809,
                      "src": "16545:8:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3787,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "16545:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3790,
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 3809,
                      "src": "16555:8:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3789,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "16555:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3792,
                      "name": "errorMessage",
                      "nodeType": "VariableDeclaration",
                      "scope": 3809,
                      "src": "16565:26:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 3791,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "16565:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16544:48:6"
                },
                "returnParameters": {
                  "id": 3796,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3795,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3809,
                      "src": "16616:6:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 3794,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "16616:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16615:8:6"
                },
                "scope": 3822,
                "src": "16530:162:6",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3820,
                  "nodeType": "Block",
                  "src": "16749:98:6",
                  "statements": [
                    {
                      "assignments": [
                        3815
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3815,
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "scope": 3820,
                          "src": "16759:15:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3814,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16759:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3816,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16759:15:6"
                    },
                    {
                      "externalReferences": [
                        {
                          "chainId": {
                            "declaration": 3815,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16795:7:6",
                            "valueSize": 1
                          }
                        }
                      ],
                      "id": 3817,
                      "nodeType": "InlineAssembly",
                      "operations": "{ chainId := chainid() }",
                      "src": "16784:33:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3818,
                        "name": "chainId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3815,
                        "src": "16833:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3813,
                      "id": 3819,
                      "nodeType": "Return",
                      "src": "16826:14:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 3821,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getChainId",
                "nodeType": "FunctionDefinition",
                "parameters": {
                  "id": 3810,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "16717:2:6"
                },
                "returnParameters": {
                  "id": 3813,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3812,
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "scope": 3821,
                      "src": "16743:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3811,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16743:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16742:6:6"
                },
                "scope": 3822,
                "src": "16698:149:6",
                "stateMutability": "pure",
                "superFunction": null,
                "visibility": "internal"
              }
            ],
            "scope": 3823,
            "src": "86:16763:6"
          }
        ],
        "src": "0:16849:6"
      }
    }
  },
  "sourceList": [
    "contracts/FeeTo.sol",
    "contracts/FeeToSetter.sol",
    "contracts/GovernorAlpha.sol",
    "contracts/SafeMath.sol",
    "contracts/Timelock.sol",
    "contracts/TreasuryVester.sol",
    "contracts/Uni.sol"
  ]
}