{
  "_format": "hh-sol-artifact-1",
  "contractName": "EscrowReward",
  "sourceName": "contracts/escrow/EscrowReward.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_lockedSOV",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_SOV",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_multisig",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_releaseTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_depositLimit",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "DepositLimitReached",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EscrowActivated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EscrowFundExpired",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EscrowInHoldingState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EscrowInWithdrawState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_lockedSOV",
          "type": "address"
        }
      ],
      "name": "LockedSOVUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newMultisig",
          "type": "address"
        }
      ],
      "name": "NewMultisig",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "RewardDepositByMultisig",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "RewardTokenWithdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenDeposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenDepositByMultisig",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_depositLimit",
          "type": "uint256"
        }
      ],
      "name": "TokenDepositLimitUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_releaseTimestamp",
          "type": "uint256"
        }
      ],
      "name": "TokenReleaseUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenWithdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenWithdrawByMultisig",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "SOV",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "changeStateToHolding",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "depositLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "depositRewardByMultisig",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "depositTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "depositTokensByMultisig",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "getReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "getUserBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "init",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lockedSOV",
      "outputs": [
        {
          "internalType": "contract ILockedSOV",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "multisig",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "releaseTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "status",
      "outputs": [
        {
          "internalType": "enum Escrow.Status",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalRewardDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newDepositLimit",
          "type": "uint256"
        }
      ],
      "name": "updateDepositLimit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_lockedSOV",
          "type": "address"
        }
      ],
      "name": "updateLockedSOV",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_newMultisig",
          "type": "address"
        }
      ],
      "name": "updateMultisig",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newReleaseTime",
          "type": "uint256"
        }
      ],
      "name": "updateReleaseTimestamp",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdrawTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdrawTokensAndReward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_receiverAddress",
          "type": "address"
        }
      ],
      "name": "withdrawTokensByMultisig",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051611bb0380380611bb0833981810160405260a081101561003357600080fd5b50805160208201516040830151606084015160809094015192939192909190838383836001600160a01b0384166100b1576040805162461bcd60e51b815260206004820152601460248201527f496e76616c696420534f5620416464726573732e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831661010c576040805162461bcd60e51b815260206004820152601960248201527f496e76616c6964204d756c746973696720416464726573732e00000000000000604482015290519081900360640190fd5b600380546001600160a01b038087166001600160a01b03199283161790925560048054928616929091168217905560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a360019190915560025550506006805460ff191690556001600160a01b038516156101a557600880546001600160a01b0319166001600160a01b0387161790555b50505050506119f7806101b96000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806377c5e10e116100b8578063c00007b01161007c578063c00007b0146102e7578063dd49756e1461030d578063e1c7392a1461032a578063ecf7085814610332578063f2f46b3b1461033a578063f6153ccd1461034257610142565b806377c5e10e146102a15780638d8f2adb146102c7578063b595c1d9146102cf578063b91d4001146102d7578063b92fd178146102df57610142565b806327debc0f1161010a57806327debc0f146101f95780632929c25c14610216578063309481e41461023c57806347734892146102445780634783c35b1461027c57806363683e5b1461028457610142565b80630570a9ed1461014757806308dcb3601461016f57806309d9287f146101935780630c6ca129146101b0578063200d2ed2146101cd575b600080fd5b61016d6004803603602081101561015d57600080fd5b50356001600160a01b031661034a565b005b61017761043e565b604080516001600160a01b039092168252519081900360200190f35b61016d600480360360208110156101a957600080fd5b503561044d565b61016d600480360360208110156101c657600080fd5b50356106dd565b6101d5610768565b604051808260048111156101e557fe5b60ff16815260200191505060405180910390f35b61016d6004803603602081101561020f57600080fd5b5035610771565b61016d6004803603602081101561022c57600080fd5b50356001600160a01b031661083d565b61016d610931565b61026a6004803603602081101561025a57600080fd5b50356001600160a01b0316610ab3565b60408051918252519081900360200190f35b610177610ad2565b61016d6004803603602081101561029a57600080fd5b5035610ae1565b61016d600480360360208110156102b757600080fd5b50356001600160a01b0316610d93565b61016d610fbc565b61016d611167565b61026a61123d565b61026a611243565b61026a600480360360208110156102fd57600080fd5b50356001600160a01b0316611249565b61016d6004803603602081101561032357600080fd5b50356112bb565b61016d6114f0565b61026a6115c6565b6101776115cc565b61026a6115db565b6004546001600160a01b03163314610397576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166103f2576040805162461bcd60e51b815260206004820152601d60248201527f496e76616c69642052657761726420546f6b656e20416464726573732e000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b03831690811790915560405133907f2e1c61b104d80d0244d7aa46590a2e67c165723a6e43fcb389731dd090e324d490600090a350565b6003546001600160a01b031681565b6004546001600160a01b0316331461049a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff1660048111156104ae57fe5b146104ea5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b600082116105295760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561058257600080fd5b505af1158015610596573d6000803e3d6000fd5b505050506040513d60208110156105ac57600080fd5b50519050806105ec5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b60408051848152905133917fb40939319ce4aad757337edb909235104a5db50bad569e463b37e1441780f371919081900360200190a2600054600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d602081101561069a57600080fd5b5051106106d8576006805460ff191660031790556040517fffd2e76576dce3794f83afe36ea9bbb778ba46b7e4c95d032832ca5858568ecb90600090a15b505050565b6004546001600160a01b0316331461072a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600181905560408051828152905133917fe616a7b2221bdb5ebbb119ffc520a3c55372c015f171cbbdf2b923dbdc5bd8e9919081900360200190a250565b60065460ff1681565b6004546001600160a01b031633146107be576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6000548110156107ff5760405162461bcd60e51b815260040180806020018281038252603781526020018061188a6037913960400191505060405180910390fd5b600281905560408051828152905133917f955882670f7f0d0c27f69140aa26b5b036247f64a181423f02ee40e37422267b919081900360200190a250565b6004546001600160a01b0316331461088a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166108e5576040805162461bcd60e51b815260206004820152601d60248201527f4e6577204d756c7469736967206164647265737320696e76616c69642e000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03831690811790915560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a350565b6001541580159061094457504260015411155b61097f5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561099357fe5b146109cf5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000805460075433835260056020526040832054610a0492916109f8919063ffffffff6115e116565b9063ffffffff61164116565b9050610a0e610fbc565b6008546040805163f33bf9a160e01b81523360048201526024810184905290516001600160a01b039092169163f33bf9a19160448082019260009290919082900301818387803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b50506040805184815290513393507f278428ce6b15e876f936987c0935aca544a92b62407b9be13fec411694abbf2792509081900360200190a25050565b6001600160a01b0381166000908152600560205260409020545b919050565b6004546001600160a01b031681565b6004546001600160a01b03163314610b2e576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600360065460ff166004811115610b4157fe5b1415610b7e5760405162461bcd60e51b81526004018080602001828103825260418152602001806119826041913960600191505060405180910390fd5b60008111610bbd5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b505050506040513d6020811015610c4057600080fd5b5051905080610c805760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b600754610c93908363ffffffff61168316565b60078190556003546008546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101949094525191169163095ea7b39160448083019260209291908290030181600087803b158015610cef57600080fd5b505af1158015610d03573d6000803e3d6000fd5b505050506040513d6020811015610d1957600080fd5b5051905080610d595760405162461bcd60e51b81526004018080602001828103825260228152602001806118c16022913960400191505060405180910390fd5b60408051838152905133917f9a9344d822c6480033db9b9da83bffd3abf8d38bae52c1d5085c47da18a52f71919081900360200190a25050565b6004546001600160a01b03163314610de0576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff166004811115610df457fe5b14610e305760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336001600160a01b03831615610e435750815b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b50516003546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151939450600093919092169163a9059cbb91604480830192602092919082900301818787803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b5051905080610f7f5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f5544e408756a3a50668b8a21fb8c1c15f76575cb77c51fa4dc602167737dc336919081900360200190a25050505050565b60015415801590610fcf57504260015411155b61100a5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561101e57fe5b1461105a5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336000818152600560209081526040808320805490849055600354825163a9059cbb60e01b8152600481019690965260248601829052915190946001600160a01b039092169263a9059cbb926044808201939182900301818787803b1580156110c257600080fd5b505af11580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b505190508061112c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634919081900360200190a2505050565b6004546001600160a01b031633146111b4576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60018060065460ff1660048111156111c857fe5b146112045760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660021790556040517f5b088f927628e8de338290d95ecd2b47be7d5cf32f833c4e83139128e9e95b2a90600090a150565b60015481565b60075481565b6007546001600160a01b0382166000908152600560205260408120549091611277919063ffffffff6115e116565b61128357506000610acd565b600080546007546001600160a01b038516835260056020526040909220546112b5926109f8919063ffffffff6115e116565b92915050565b60018060065460ff1660048111156112cf57fe5b1461130b5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000821161134a5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600254600054839190611363908363ffffffff61168316565b106113aa5760005460025461137d9163ffffffff6116dd16565b6040519091507f248455798e33b4871de4258bfab3fb4b1bc826e576369d72ee7c613e411d262f90600090a15b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b505050506040513d602081101561142d57600080fd5b505190508061146d5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b3360009081526005602052604090205461148d908363ffffffff61168316565b33600090815260056020526040812091909155546114b1908363ffffffff61168316565b60005560408051838152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a250505050565b6004546001600160a01b0316331461153d576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60008060065460ff16600481111561155157fe5b1461158d5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660011790556040517f1295541c130ffcc33980a4c0939feefa3de1f7989fae02b43176efa73973de0d90600090a150565b60025481565b6008546001600160a01b031681565b60005481565b6000826115f0575060006112b5565b828202828482816115fd57fe5b041461163a5760405162461bcd60e51b81526004018080602001828103825260218152602001806118e36021913960400191505060405180910390fd5b9392505050565b600061163a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061171f565b60008282018381101561163a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061163a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117c1565b600081836117ab5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611770578181015183820152602001611758565b50505050905090810190601f16801561179d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816117b757fe5b0495945050505050565b600081848411156118135760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611770578181015183820152602001611758565b50505090039056fe546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e5468652072656c656173652074696d6520686173206e6f742073746172746564207965742e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4465706f73697420616c726561647920686967686572207468616e20746865206c696d697420747279696e6720746f206265207365742e546f6b656e20417070726f76616c20776173206e6f74207375636365737366756c2e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4f6e6c79204d756c74697369672063616e2063616c6c20746869732e0000000052657761726420546f6b656e206465706f736974206973206f6e6c7920616c6c6f776564206265666f72652055736572205769746864726177207374617274732ea265627a7a723158209898e33dc245e024411a10f565afd5b091b995840a3766026193343e89ed2f2e64736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806377c5e10e116100b8578063c00007b01161007c578063c00007b0146102e7578063dd49756e1461030d578063e1c7392a1461032a578063ecf7085814610332578063f2f46b3b1461033a578063f6153ccd1461034257610142565b806377c5e10e146102a15780638d8f2adb146102c7578063b595c1d9146102cf578063b91d4001146102d7578063b92fd178146102df57610142565b806327debc0f1161010a57806327debc0f146101f95780632929c25c14610216578063309481e41461023c57806347734892146102445780634783c35b1461027c57806363683e5b1461028457610142565b80630570a9ed1461014757806308dcb3601461016f57806309d9287f146101935780630c6ca129146101b0578063200d2ed2146101cd575b600080fd5b61016d6004803603602081101561015d57600080fd5b50356001600160a01b031661034a565b005b61017761043e565b604080516001600160a01b039092168252519081900360200190f35b61016d600480360360208110156101a957600080fd5b503561044d565b61016d600480360360208110156101c657600080fd5b50356106dd565b6101d5610768565b604051808260048111156101e557fe5b60ff16815260200191505060405180910390f35b61016d6004803603602081101561020f57600080fd5b5035610771565b61016d6004803603602081101561022c57600080fd5b50356001600160a01b031661083d565b61016d610931565b61026a6004803603602081101561025a57600080fd5b50356001600160a01b0316610ab3565b60408051918252519081900360200190f35b610177610ad2565b61016d6004803603602081101561029a57600080fd5b5035610ae1565b61016d600480360360208110156102b757600080fd5b50356001600160a01b0316610d93565b61016d610fbc565b61016d611167565b61026a61123d565b61026a611243565b61026a600480360360208110156102fd57600080fd5b50356001600160a01b0316611249565b61016d6004803603602081101561032357600080fd5b50356112bb565b61016d6114f0565b61026a6115c6565b6101776115cc565b61026a6115db565b6004546001600160a01b03163314610397576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166103f2576040805162461bcd60e51b815260206004820152601d60248201527f496e76616c69642052657761726420546f6b656e20416464726573732e000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b03831690811790915560405133907f2e1c61b104d80d0244d7aa46590a2e67c165723a6e43fcb389731dd090e324d490600090a350565b6003546001600160a01b031681565b6004546001600160a01b0316331461049a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff1660048111156104ae57fe5b146104ea5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b600082116105295760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561058257600080fd5b505af1158015610596573d6000803e3d6000fd5b505050506040513d60208110156105ac57600080fd5b50519050806105ec5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b60408051848152905133917fb40939319ce4aad757337edb909235104a5db50bad569e463b37e1441780f371919081900360200190a2600054600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d602081101561069a57600080fd5b5051106106d8576006805460ff191660031790556040517fffd2e76576dce3794f83afe36ea9bbb778ba46b7e4c95d032832ca5858568ecb90600090a15b505050565b6004546001600160a01b0316331461072a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600181905560408051828152905133917fe616a7b2221bdb5ebbb119ffc520a3c55372c015f171cbbdf2b923dbdc5bd8e9919081900360200190a250565b60065460ff1681565b6004546001600160a01b031633146107be576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6000548110156107ff5760405162461bcd60e51b815260040180806020018281038252603781526020018061188a6037913960400191505060405180910390fd5b600281905560408051828152905133917f955882670f7f0d0c27f69140aa26b5b036247f64a181423f02ee40e37422267b919081900360200190a250565b6004546001600160a01b0316331461088a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166108e5576040805162461bcd60e51b815260206004820152601d60248201527f4e6577204d756c7469736967206164647265737320696e76616c69642e000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03831690811790915560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a350565b6001541580159061094457504260015411155b61097f5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561099357fe5b146109cf5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000805460075433835260056020526040832054610a0492916109f8919063ffffffff6115e116565b9063ffffffff61164116565b9050610a0e610fbc565b6008546040805163f33bf9a160e01b81523360048201526024810184905290516001600160a01b039092169163f33bf9a19160448082019260009290919082900301818387803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b50506040805184815290513393507f278428ce6b15e876f936987c0935aca544a92b62407b9be13fec411694abbf2792509081900360200190a25050565b6001600160a01b0381166000908152600560205260409020545b919050565b6004546001600160a01b031681565b6004546001600160a01b03163314610b2e576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600360065460ff166004811115610b4157fe5b1415610b7e5760405162461bcd60e51b81526004018080602001828103825260418152602001806119826041913960600191505060405180910390fd5b60008111610bbd5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b505050506040513d6020811015610c4057600080fd5b5051905080610c805760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b600754610c93908363ffffffff61168316565b60078190556003546008546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101949094525191169163095ea7b39160448083019260209291908290030181600087803b158015610cef57600080fd5b505af1158015610d03573d6000803e3d6000fd5b505050506040513d6020811015610d1957600080fd5b5051905080610d595760405162461bcd60e51b81526004018080602001828103825260228152602001806118c16022913960400191505060405180910390fd5b60408051838152905133917f9a9344d822c6480033db9b9da83bffd3abf8d38bae52c1d5085c47da18a52f71919081900360200190a25050565b6004546001600160a01b03163314610de0576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff166004811115610df457fe5b14610e305760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336001600160a01b03831615610e435750815b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b50516003546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151939450600093919092169163a9059cbb91604480830192602092919082900301818787803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b5051905080610f7f5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f5544e408756a3a50668b8a21fb8c1c15f76575cb77c51fa4dc602167737dc336919081900360200190a25050505050565b60015415801590610fcf57504260015411155b61100a5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561101e57fe5b1461105a5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336000818152600560209081526040808320805490849055600354825163a9059cbb60e01b8152600481019690965260248601829052915190946001600160a01b039092169263a9059cbb926044808201939182900301818787803b1580156110c257600080fd5b505af11580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b505190508061112c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634919081900360200190a2505050565b6004546001600160a01b031633146111b4576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60018060065460ff1660048111156111c857fe5b146112045760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660021790556040517f5b088f927628e8de338290d95ecd2b47be7d5cf32f833c4e83139128e9e95b2a90600090a150565b60015481565b60075481565b6007546001600160a01b0382166000908152600560205260408120549091611277919063ffffffff6115e116565b61128357506000610acd565b600080546007546001600160a01b038516835260056020526040909220546112b5926109f8919063ffffffff6115e116565b92915050565b60018060065460ff1660048111156112cf57fe5b1461130b5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000821161134a5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600254600054839190611363908363ffffffff61168316565b106113aa5760005460025461137d9163ffffffff6116dd16565b6040519091507f248455798e33b4871de4258bfab3fb4b1bc826e576369d72ee7c613e411d262f90600090a15b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b505050506040513d602081101561142d57600080fd5b505190508061146d5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b3360009081526005602052604090205461148d908363ffffffff61168316565b33600090815260056020526040812091909155546114b1908363ffffffff61168316565b60005560408051838152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a250505050565b6004546001600160a01b0316331461153d576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60008060065460ff16600481111561155157fe5b1461158d5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660011790556040517f1295541c130ffcc33980a4c0939feefa3de1f7989fae02b43176efa73973de0d90600090a150565b60025481565b6008546001600160a01b031681565b60005481565b6000826115f0575060006112b5565b828202828482816115fd57fe5b041461163a5760405162461bcd60e51b81526004018080602001828103825260218152602001806118e36021913960400191505060405180910390fd5b9392505050565b600061163a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061171f565b60008282018381101561163a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061163a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117c1565b600081836117ab5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611770578181015183820152602001611758565b50505050905090810190601f16801561179d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816117b757fe5b0495945050505050565b600081848411156118135760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611770578181015183820152602001611758565b50505090039056fe546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e5468652072656c656173652074696d6520686173206e6f742073746172746564207965742e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4465706f73697420616c726561647920686967686572207468616e20746865206c696d697420747279696e6720746f206265207365742e546f6b656e20417070726f76616c20776173206e6f74207375636365737366756c2e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4f6e6c79204d756c74697369672063616e2063616c6c20746869732e0000000052657761726420546f6b656e206465706f736974206973206f6e6c7920616c6c6f776564206265666f72652055736572205769746864726177207374617274732ea265627a7a723158209898e33dc245e024411a10f565afd5b091b995840a3766026193343e89ed2f2e64736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
