{
  "contractName": "FundingRequest",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "NewFundingProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_decision",
          "type": "bool"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "FUNDED_BEFORE_DEADLINE_KEY",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FUNDED_BEFORE_DEADLINE_VALUE",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "internalType": "contract Avatar",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "balanceOfStakingToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "burnReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_decision",
          "type": "int256"
        }
      ],
      "name": "executeProposal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fundingToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getTotalReputationSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "_votingMachine",
          "type": "address"
        },
        {
          "internalType": "uint256[11]",
          "name": "_votingParams",
          "type": "uint256[11]"
        },
        {
          "internalType": "address",
          "name": "_voteOnBehalf",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_voteParamsHash",
          "type": "bytes32"
        },
        {
          "internalType": "contract IERC20",
          "name": "_fundingToken",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "descriptionHash",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "executionTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "redeem",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "reputationOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "stakingTokenTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "voteParamsHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingMachine",
      "outputs": [
        {
          "internalType": "contract IntVoteInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611e6b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80639588378e116100a2578063bea75f2811610071578063bea75f2814610475578063d29b5d2f146104b1578063e4392dbb146104e3578063eda1122c146104eb578063f81f8bf61461050857610116565b80639588378e146103a6578063985e313f146103d25780639d4c162d14610421578063b551c3731461045857610116565b80636b8eb403116100e95780636b8eb4031461021d57806378065f27146102495780637a5cb92c146102515780637b166f601461026e5780639537ba0c1461032957610116565b806332ed5b121461011b5780633edf7ca1146101d75780634ea2c7ec146101fb5780635aef7de614610215575b600080fd5b6101386004803603602081101561013157600080fd5b503561053a565b60405180856001600160a01b03166001600160a01b0316815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610199578181015183820152602001610181565b50505050905090810190601f1680156101c65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6101df6105f6565b604080516001600160a01b039092168252519081900360200190f35b610203610605565b60408051918252519081900360200190f35b6101df61060b565b6102036004803603604081101561023357600080fd5b506001600160a01b03813516906020013561061a565b6101df6106f4565b6102036004803603602081101561026757600080fd5b5035610703565b6102036004803603606081101561028457600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156102b457600080fd5b8201836020820111156102c657600080fd5b803590602001918460018302840111640100000000831117156102e857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610715945050505050565b610331610b7a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036b578181015183820152602001610353565b50505050905090810190601f1680156103985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610203600480360360408110156103bc57600080fd5b506001600160a01b038135169060200135610b9a565b61041f60048036036102008110156103e957600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516610ccb565b005b6104446004803603604081101561043757600080fd5b5080359060200135610d29565b604080519115158252519081900360200190f35b6102036004803603602081101561046e57600080fd5b5035610e2e565b6104446004803603608081101561048b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610f8b565b610444600480360360608110156104c757600080fd5b508035906001600160a01b0360208201351690604001356110ef565b61033161124a565b61041f6004803603602081101561050157600080fd5b503561127c565b6104446004803603606081101561051e57600080fd5b508035906001600160a01b0360208201351690604001356116c7565b60376020908152600091825260409182902080546001808301546002808501805488516101009582161595909502600019011691909104601f81018790048702840187019097528683526001600160a01b039093169590949192918301828280156105e65780601f106105bb576101008083540402835291602001916105e6565b820191906000526020600020905b8154815290600101906020018083116105c957829003601f168201915b5050505050908060030154905084565b6034546001600160a01b031681565b60355481565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610673576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b1580156106c057600080fd5b505afa1580156106d4573d6000803e3d6000fd5b505050506040513d60208110156106ea57600080fd5b5051949350505050565b6038546001600160a01b031681565b60366020526000908152604090205481565b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b815293840192835280516024850152805160009661090496956001600160a01b03909416946358cb548b9490928392604490920191908083838d5b838110156107bf5781810151838201526020016107a7565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561080957600080fd5b505afa15801561081d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561084657600080fd5b810190808051604051939291908464010000000082111561086657600080fd5b90830190602082018581111561087b57600080fd5b825164010000000081118282018810171561089557600080fd5b82525081516020918201929091019080838360005b838110156108c25781810151838201526020016108aa565b50505050905090810190601f1680156108ef5780820380516001836020036101000a031916815260200191505b506040525050506117ed90919063ffffffff16565b610955576040805162461bcd60e51b815260206004820152601a60248201527f66756e64696e67206973206e6f7420616c6c6f77656420796574000000000000604482015290519081900360640190fd5b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b1580156109c057600080fd5b505af11580156109d4573d6000803e3d6000fd5b505050506040513d60208110156109ea57600080fd5b50519050846001600160a01b038116610a005750335b610a08611c85565b50604080516080810182526001600160a01b03838116825260208083018981528385018981526000606086018190528881526037845295909520845181546001600160a01b03191694169390931783555160018301559251805192938493610a769260028501920190611cb6565b506060820151816003015590505082603360009054906101000a90046001600160a01b03166001600160a01b03167f5521e19c8b6a114aa1b48b207fe948b6adb2c015a14db582702484d4ed847bf984898960405180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b23578181015183820152602001610b0b565b50505050905090810190601f168015610b505780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350506000818152603660205260409020439055949350505050565b604051806040016040528060048152602001635452554560e01b81525081565b60345460009082906001600160a01b03163314610bf3576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4157600080fd5b505afa158015610c55573d6000803e3d6000fd5b505050506040513d6020811015610c6b57600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b1580156106c057600080fd5b610d0286868487600b806020026040519081016040528092919082600b602002808284376000920191909152508991506118e69050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b03163314610d82576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b60008481526037602052604090206003015415610d9e57600080fd5b6000848152603760205260409020546001600160a01b0316610dbf57600080fd5b8260011415610dde576000848152603760205260409020426003909101555b60335460408051600186148152905186926001600160a01b0316917fd8b58d7c4ba1519b89f0a4b59f85c776d1bb2876a5087a4e604403c4c3c69f6d919081900360200190a35060019392505050565b60345460009082906001600160a01b03163314610e87576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed557600080fd5b505afa158015610ee9573d6000803e3d6000fd5b505050506040513d6020811015610eff57600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b158015610f5857600080fd5b505afa158015610f6c573d6000803e3d6000fd5b505050506040513d6020811015610f8257600080fd5b50519392505050565b60345460009082906001600160a01b03163314610fe4576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103257600080fd5b505afa158015611046573d6000803e3d6000fd5b505050506040513d602081101561105c57600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b1580156110b957600080fd5b505af11580156110cd573d6000803e3d6000fd5b505050506040513d60208110156110e357600080fd5b50519695505050505050565b60345460009082906001600160a01b03163314611148576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119657600080fd5b505afa1580156111aa573d6000803e3d6000fd5b505050506040513d60208110156111c057600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b505050506040513d602081101561123f57600080fd5b505195945050505050565b6040518060400160405280601681526020017546554e4445445f4245464f52455f444541444c494e4560501b81525081565b611284611c85565b600082815260376020908152604091829020825160808101845281546001600160a01b03168152600180830154828501526002808401805487516101009482161594909402600019011691909104601f810186900486028301860187528083529295939493860193919290918301828280156113415780601f1061131657610100808354040283529160200191611341565b820191906000526020600020905b81548152906001019060200180831161132457829003601f168201915b5050509183525050600391820154602091820152600085815260379091526040902090810154919250906113a65760405162461bcd60e51b8152600401808060200182810382526027815260200180611d966027913960400191505060405180910390fd5b600060038201556038546001600160a01b03166114fa57603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561140b57600080fd5b505afa15801561141f573d6000803e3d6000fd5b505050506040513d602081101561143557600080fd5b505160208381015184516040805163658b6a5160e11b815260048101939093526001600160a01b0391821660248401525193169263cb16d4a2926044808401939192918290030181600087803b15801561148e57600080fd5b505af11580156114a2573d6000803e3d6000fd5b505050506040513d60208110156114b857600080fd5b50516114f55760405162461bcd60e51b8152600401808060200182810382526029815260200180611dbd6029913960400191505060405180910390fd5b61163c565b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154857600080fd5b505afa15801561155c573d6000803e3d6000fd5b505050506040513d602081101561157257600080fd5b505160385483516020858101516040805163dab0efff60e01b81526001600160a01b0395861660048201529385166024850152604484019190915251929093169263dab0efff926064808401938290030181600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b505050506040513d60208110156115ff57600080fd5b505161163c5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e146022913960400191505060405180910390fd5b815160335460208085015160408051918252516001600160a01b0394851694889416927f075749b8acc7384f25535cc6f8f122e4d5129595395cb6fbcbf8b15006069eda928290030190a4600083815260376020526040812080546001600160a01b031916815560018101829055906116b86002830182611d34565b60038201600090555050505050565b60345460009082906001600160a01b03163314611720576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561176e57600080fd5b505afa158015611782573d6000803e3d6000fd5b505050506040513d602081101561179857600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b15801561121557600080fd5b60008151835114611800575060006118e0565b816040516020018082805190602001908083835b602083106118335780518252601f199092019160209182019101611814565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106118a15780518252601f199092019160209182019101611882565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490505b92915050565b6001600160a01b038416611941576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b61194a85611b65565b603480546001600160a01b0319166001600160a01b03861617905582611b58576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b838110156119b457818101518382015260200161199c565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b1580156119ef57600080fd5b505afa158015611a03573d6000803e3d6000fd5b505050506040513d6020811015611a1957600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611a6b57600080fd5b505afa158015611a7f573d6000803e3d6000fd5b505050506040513d6101a0811015611a9657600080fd5b5051905080611b5157604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611ae7578181015183820152602001611acf565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015611b2457600080fd5b505af1158015611b38573d6000803e3d6000fd5b505050506040513d6020811015611b4e57600080fd5b50505b5050611b5e565b60358390555b5050505050565b600054610100900460ff1680611b7e5750611b7e611c7e565b80611b8c575060005460ff16155b611bc75760405162461bcd60e51b815260040180806020018281038252602e815260200180611de6602e913960400191505060405180910390fd5b600054610100900460ff16158015611bf2576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216611c4d576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015611c7a576000805461ff00191690555b5050565b303b155b90565b604051806080016040528060006001600160a01b031681526020016000815260200160608152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cf757805160ff1916838001178555611d24565b82800160010185558215611d24579182015b82811115611d24578251825591602001919060010190611d09565b50611d30929150611d7b565b5090565b50805460018160011615610100020316600290046000825580601f10611d5a5750611d78565b601f016020900490600052602060002090810190611d789190611d7b565b50565b611c8291905b80821115611d305760008155600101611d8156fe70726f706f73616c20646f6573206e6f74206578697374206f72206e6f7420617070726f7665646661696c656420746f207472616e73666572206e6574776f726b20746f6b656e2066726f6d2044414f436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65646661696c656420746f207472616e7366657220746f6b656e732066726f6d2044414fa2646970667358221220803a0b6562706ec1a08d5cb8311b9185a07b423de15f5b41aec178318815ca4964736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80639588378e116100a2578063bea75f2811610071578063bea75f2814610475578063d29b5d2f146104b1578063e4392dbb146104e3578063eda1122c146104eb578063f81f8bf61461050857610116565b80639588378e146103a6578063985e313f146103d25780639d4c162d14610421578063b551c3731461045857610116565b80636b8eb403116100e95780636b8eb4031461021d57806378065f27146102495780637a5cb92c146102515780637b166f601461026e5780639537ba0c1461032957610116565b806332ed5b121461011b5780633edf7ca1146101d75780634ea2c7ec146101fb5780635aef7de614610215575b600080fd5b6101386004803603602081101561013157600080fd5b503561053a565b60405180856001600160a01b03166001600160a01b0316815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610199578181015183820152602001610181565b50505050905090810190601f1680156101c65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6101df6105f6565b604080516001600160a01b039092168252519081900360200190f35b610203610605565b60408051918252519081900360200190f35b6101df61060b565b6102036004803603604081101561023357600080fd5b506001600160a01b03813516906020013561061a565b6101df6106f4565b6102036004803603602081101561026757600080fd5b5035610703565b6102036004803603606081101561028457600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156102b457600080fd5b8201836020820111156102c657600080fd5b803590602001918460018302840111640100000000831117156102e857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610715945050505050565b610331610b7a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036b578181015183820152602001610353565b50505050905090810190601f1680156103985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610203600480360360408110156103bc57600080fd5b506001600160a01b038135169060200135610b9a565b61041f60048036036102008110156103e957600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516610ccb565b005b6104446004803603604081101561043757600080fd5b5080359060200135610d29565b604080519115158252519081900360200190f35b6102036004803603602081101561046e57600080fd5b5035610e2e565b6104446004803603608081101561048b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610f8b565b610444600480360360608110156104c757600080fd5b508035906001600160a01b0360208201351690604001356110ef565b61033161124a565b61041f6004803603602081101561050157600080fd5b503561127c565b6104446004803603606081101561051e57600080fd5b508035906001600160a01b0360208201351690604001356116c7565b60376020908152600091825260409182902080546001808301546002808501805488516101009582161595909502600019011691909104601f81018790048702840187019097528683526001600160a01b039093169590949192918301828280156105e65780601f106105bb576101008083540402835291602001916105e6565b820191906000526020600020905b8154815290600101906020018083116105c957829003601f168201915b5050505050908060030154905084565b6034546001600160a01b031681565b60355481565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610673576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b1580156106c057600080fd5b505afa1580156106d4573d6000803e3d6000fd5b505050506040513d60208110156106ea57600080fd5b5051949350505050565b6038546001600160a01b031681565b60366020526000908152604090205481565b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b815293840192835280516024850152805160009661090496956001600160a01b03909416946358cb548b9490928392604490920191908083838d5b838110156107bf5781810151838201526020016107a7565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561080957600080fd5b505afa15801561081d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561084657600080fd5b810190808051604051939291908464010000000082111561086657600080fd5b90830190602082018581111561087b57600080fd5b825164010000000081118282018810171561089557600080fd5b82525081516020918201929091019080838360005b838110156108c25781810151838201526020016108aa565b50505050905090810190601f1680156108ef5780820380516001836020036101000a031916815260200191505b506040525050506117ed90919063ffffffff16565b610955576040805162461bcd60e51b815260206004820152601a60248201527f66756e64696e67206973206e6f7420616c6c6f77656420796574000000000000604482015290519081900360640190fd5b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b1580156109c057600080fd5b505af11580156109d4573d6000803e3d6000fd5b505050506040513d60208110156109ea57600080fd5b50519050846001600160a01b038116610a005750335b610a08611c85565b50604080516080810182526001600160a01b03838116825260208083018981528385018981526000606086018190528881526037845295909520845181546001600160a01b03191694169390931783555160018301559251805192938493610a769260028501920190611cb6565b506060820151816003015590505082603360009054906101000a90046001600160a01b03166001600160a01b03167f5521e19c8b6a114aa1b48b207fe948b6adb2c015a14db582702484d4ed847bf984898960405180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b23578181015183820152602001610b0b565b50505050905090810190601f168015610b505780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350506000818152603660205260409020439055949350505050565b604051806040016040528060048152602001635452554560e01b81525081565b60345460009082906001600160a01b03163314610bf3576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4157600080fd5b505afa158015610c55573d6000803e3d6000fd5b505050506040513d6020811015610c6b57600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b1580156106c057600080fd5b610d0286868487600b806020026040519081016040528092919082600b602002808284376000920191909152508991506118e69050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b03163314610d82576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b60008481526037602052604090206003015415610d9e57600080fd5b6000848152603760205260409020546001600160a01b0316610dbf57600080fd5b8260011415610dde576000848152603760205260409020426003909101555b60335460408051600186148152905186926001600160a01b0316917fd8b58d7c4ba1519b89f0a4b59f85c776d1bb2876a5087a4e604403c4c3c69f6d919081900360200190a35060019392505050565b60345460009082906001600160a01b03163314610e87576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed557600080fd5b505afa158015610ee9573d6000803e3d6000fd5b505050506040513d6020811015610eff57600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b158015610f5857600080fd5b505afa158015610f6c573d6000803e3d6000fd5b505050506040513d6020811015610f8257600080fd5b50519392505050565b60345460009082906001600160a01b03163314610fe4576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103257600080fd5b505afa158015611046573d6000803e3d6000fd5b505050506040513d602081101561105c57600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b1580156110b957600080fd5b505af11580156110cd573d6000803e3d6000fd5b505050506040513d60208110156110e357600080fd5b50519695505050505050565b60345460009082906001600160a01b03163314611148576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119657600080fd5b505afa1580156111aa573d6000803e3d6000fd5b505050506040513d60208110156111c057600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b505050506040513d602081101561123f57600080fd5b505195945050505050565b6040518060400160405280601681526020017546554e4445445f4245464f52455f444541444c494e4560501b81525081565b611284611c85565b600082815260376020908152604091829020825160808101845281546001600160a01b03168152600180830154828501526002808401805487516101009482161594909402600019011691909104601f810186900486028301860187528083529295939493860193919290918301828280156113415780601f1061131657610100808354040283529160200191611341565b820191906000526020600020905b81548152906001019060200180831161132457829003601f168201915b5050509183525050600391820154602091820152600085815260379091526040902090810154919250906113a65760405162461bcd60e51b8152600401808060200182810382526027815260200180611d966027913960400191505060405180910390fd5b600060038201556038546001600160a01b03166114fa57603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561140b57600080fd5b505afa15801561141f573d6000803e3d6000fd5b505050506040513d602081101561143557600080fd5b505160208381015184516040805163658b6a5160e11b815260048101939093526001600160a01b0391821660248401525193169263cb16d4a2926044808401939192918290030181600087803b15801561148e57600080fd5b505af11580156114a2573d6000803e3d6000fd5b505050506040513d60208110156114b857600080fd5b50516114f55760405162461bcd60e51b8152600401808060200182810382526029815260200180611dbd6029913960400191505060405180910390fd5b61163c565b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154857600080fd5b505afa15801561155c573d6000803e3d6000fd5b505050506040513d602081101561157257600080fd5b505160385483516020858101516040805163dab0efff60e01b81526001600160a01b0395861660048201529385166024850152604484019190915251929093169263dab0efff926064808401938290030181600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b505050506040513d60208110156115ff57600080fd5b505161163c5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e146022913960400191505060405180910390fd5b815160335460208085015160408051918252516001600160a01b0394851694889416927f075749b8acc7384f25535cc6f8f122e4d5129595395cb6fbcbf8b15006069eda928290030190a4600083815260376020526040812080546001600160a01b031916815560018101829055906116b86002830182611d34565b60038201600090555050505050565b60345460009082906001600160a01b03163314611720576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561176e57600080fd5b505afa158015611782573d6000803e3d6000fd5b505050506040513d602081101561179857600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b15801561121557600080fd5b60008151835114611800575060006118e0565b816040516020018082805190602001908083835b602083106118335780518252601f199092019160209182019101611814565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106118a15780518252601f199092019160209182019101611882565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490505b92915050565b6001600160a01b038416611941576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b61194a85611b65565b603480546001600160a01b0319166001600160a01b03861617905582611b58576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b838110156119b457818101518382015260200161199c565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b1580156119ef57600080fd5b505afa158015611a03573d6000803e3d6000fd5b505050506040513d6020811015611a1957600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611a6b57600080fd5b505afa158015611a7f573d6000803e3d6000fd5b505050506040513d6101a0811015611a9657600080fd5b5051905080611b5157604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611ae7578181015183820152602001611acf565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015611b2457600080fd5b505af1158015611b38573d6000803e3d6000fd5b505050506040513d6020811015611b4e57600080fd5b50505b5050611b5e565b60358390555b5050505050565b600054610100900460ff1680611b7e5750611b7e611c7e565b80611b8c575060005460ff16155b611bc75760405162461bcd60e51b815260040180806020018281038252602e815260200180611de6602e913960400191505060405180910390fd5b600054610100900460ff16158015611bf2576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216611c4d576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015611c7a576000805461ff00191690555b5050565b303b155b90565b604051806080016040528060006001600160a01b031681526020016000815260200160608152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cf757805160ff1916838001178555611d24565b82800160010185558215611d24579182015b82811115611d24578251825591602001919060010190611d09565b50611d30929150611d7b565b5090565b50805460018160011615610100020316600290046000825580601f10611d5a5750611d78565b601f016020900490600052602060002090810190611d789190611d7b565b50565b611c8291905b80821115611d305760008155600101611d8156fe70726f706f73616c20646f6573206e6f74206578697374206f72206e6f7420617070726f7665646661696c656420746f207472616e73666572206e6574776f726b20746f6b656e2066726f6d2044414f436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65646661696c656420746f207472616e7366657220746f6b656e732066726f6d2044414fa2646970667358221220803a0b6562706ec1a08d5cb8311b9185a07b423de15f5b41aec178318815ca4964736f6c634300060a0033"
}