[ { "inputs": [], "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": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "numTokens", "type": "uint256" } ], "name": "Contribution", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Fail", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "numTokens", "type": "uint256" } ], "name": "Payout", "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "numTokens", "type": "uint256" } ], "name": "TransferContributions", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "numTokens", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "contributeERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contributeEth", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "contributionRangeFor", "outputs": [ { "internalType": "uint256", "name": "min", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "endsAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc20Address", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRecipientAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "goalMax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "goalMin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "minGoal", "type": "uint256" }, { "internalType": "uint256", "name": "maxGoal", "type": "uint256" }, { "internalType": "uint256", "name": "minContribution", "type": "uint256" }, { "internalType": "uint256", "name": "maxContribution", "type": "uint256" }, { "internalType": "uint256", "name": "startTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "endTimestamp", "type": "uint256" }, { "internalType": "address", "name": "erc20TokenAddr", "type": "address" }, { "internalType": "address", "name": "feeRecipientAddr", "type": "address" }, { "internalType": "uint16", "name": "feeTransferBips", "type": "uint16" }, { "internalType": "uint16", "name": "feeYieldBips", "type": "uint16" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isContributionAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isEnded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isEthDenominated", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isGoalMaxMet", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isGoalMinMet", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isStarted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isUnlockAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isWithdrawAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxAllowedContribution", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minAllowedContribution", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "recipientAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startsAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "state", "outputs": [ { "internalType": "enum CrowdFinancingV1.State", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferBalanceToRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferFeeBips", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unlockFailedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "withdrawsOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "yieldBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "yieldERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "yieldEth", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "yieldFeeBips", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldTotal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "yieldTotalOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612b7980620000f36000396000f3fe6080604052600436106102515760003560e01c80638812ebc911610139578063cb02f1bf116100b6578063e0adb84b1161007a578063e0adb84b14610685578063eb94eecb1461069a578063eea659cf146106af578063f1bab2ec146106c4578063fad1bfe8146106e2578063fd5b33c51461070257600080fd5b8063cb02f1bf1461060c578063cd8c063b14610621578063d472c65614610636578063d6b133a81461064b578063dd62ed3e1461066557600080fd5b8063af468682116100fd578063af46868214610580578063afa0e8d514610595578063b065e5a91461059d578063c19d93fb146105b6578063c7b03a3e146105d657600080fd5b80638812ebc9146104f3578063a457c2d714610513578063a4fd6f5614610533578063a9059cbb1461054b578063ab5a6bf71461056b57600080fd5b80633ccfd60b116101d25780635aff5999116101965780635aff59991461041b57806370a082311461043e57806376e99707146104745780637e6d0fa0146104895780638160059a1461049e5780638449cf0d146104be57600080fd5b80633ccfd60b146103a4578063442f4537146103b957806346a35e1e146103d9578063544736e6146103ee578063570f7e541461040657600080fd5b8063276184ae11610219578063276184ae146102ff57806329b36baf14610331578063300a7dac1461034b578063362da6b614610355578063395093511461038457600080fd5b8063095ea7b3146102565780630a09284a1461028b57806318160ddd146102aa57806320084aef146102bf57806323b872dd146102df575b600080fd5b34801561026257600080fd5b506102766102713660046127d4565b610722565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b50603a545b604051908152602001610282565b3480156102b657600080fd5b50603b5461029c565b3480156102cb57600080fd5b5061029c6102da3660046127fe565b610739565b3480156102eb57600080fd5b506102766102fa366004612819565b61079a565b34801561030b57600080fd5b506034546001600160a01b03165b6040516001600160a01b039091168152602001610282565b34801561033d57600080fd5b50603654603b541015610276565b6103536107be565b005b34801561036157600080fd5b50604054600160b01b900461ffff165b60405161ffff9091168152602001610282565b34801561039057600080fd5b5061027661039f3660046127d4565b6108c6565b3480156103b057600080fd5b506103536108f2565b3480156103c557600080fd5b50604054600160a01b900461ffff16610371565b3480156103e557600080fd5b5060385461029c565b3480156103fa57600080fd5b50603954421015610276565b34801561041257600080fd5b5060355461029c565b34801561042757600080fd5b5060335461010090046001600160a01b0316610319565b34801561044a57600080fd5b5061029c6104593660046127fe565b6001600160a01b03166000908152603d602052604090205490565b34801561048057600080fd5b5060375461029c565b34801561049557600080fd5b506102766109c3565b3480156104aa57600080fd5b506103536104b9366004612855565b610a23565b3480156104ca57600080fd5b506104de6104d93660046127fe565b610a87565b60408051928352602083019190915201610282565b3480156104ff57600080fd5b5061029c61050e3660046127fe565b610b35565b34801561051f57600080fd5b5061027661052e3660046127d4565b610b61565b34801561053f57600080fd5b50603a54421015610276565b34801561055757600080fd5b506102766105663660046127d4565b610bdc565b34801561057757600080fd5b50610353610be9565b34801561058c57600080fd5b5060395461029c565b610353610ea2565b3480156105a957600080fd5b5060425460ff1615610276565b3480156105c257600080fd5b5060335460ff166040516102829190612884565b3480156105e257600080fd5b5061029c6105f13660046127fe565b6001600160a01b03166000908152603e602052604090205490565b34801561061857600080fd5b5060415461029c565b34801561062d57600080fd5b50610276610ef6565b34801561064257600080fd5b5060365461029c565b34801561065757600080fd5b50603554603b541015610276565b34801561067157600080fd5b5061029c6106803660046128ac565b610f49565b34801561069157600080fd5b50610353610f74565b3480156106a657600080fd5b50610276611000565b3480156106bb57600080fd5b5061027661104a565b3480156106d057600080fd5b506040546001600160a01b0316610319565b3480156106ee57600080fd5b506103536106fd3660046128f1565b611085565b34801561070e57600080fd5b5061035361071d366004612855565b611724565b600061072f33848461182e565b5060015b92915050565b60008061074583611952565b6001600160a01b0384166000908152603d602052604090205490915081116107705750600092915050565b6001600160a01b0383166000908152603d602052604090205461079390826129a9565b9392505050565b6000336107a8858285611999565b6107b3858585611a13565b506001949350505050565b60425460ff161561080b5760405162461bcd60e51b8152602060048201526012602482015271115512081bdb9b1e48199b8818d85b1b195960721b60448201526064015b60405180910390fd5b34600260335460ff1660028111156108255761082561286e565b1461086a5760405162461bcd60e51b815260206004820152601560248201527410d85b9b9bdd081858d8d95c1d081c185e5b595b9d605a1b6044820152606401610802565b600081116108a85760405162461bcd60e51b815260206004820152600b60248201526a0416d6f756e7420697320360ac1b6044820152606401610802565b6108b0611c50565b6108ba3334611ca9565b6108c360018055565b50565b6000336108e88185856108d98383610f49565b6108e391906129bc565b61182e565b5060019392505050565b6108fa6109c3565b61093d5760405162461bcd60e51b815260206004820152601460248201527315da5d1a191c985dc81b9bdd08185b1b1bddd95960621b6044820152606401610802565b600060335460ff1660028111156109565761095661286e565b03610992576033805460ff191660011790556040517f552670ff675a9be10b4cab1e93ea5cffbaf9199dbe09f0e1c1bc31fa9a56dd1390600090a15b33600260335460ff1660028111156109ac576109ac61286e565b036109ba576108c381611d0d565b6108c381611e12565b6000600260335460ff1660028111156109de576109de61286e565b1480610a005750600160335460ff1660028111156109fe576109fe61286e565b145b80610a1e5750603a544210158015610a1e5750603554603b5410155b155b905090565b60425460ff16610a6c5760405162461bcd60e51b8152602060048201526014602482015273195c98cc8c081bdb9b1e48199b8818d85b1b195960621b6044820152606401610802565b610a74611c50565b6108ba33610a823384611f38565b61210c565b6001600160a01b0381166000908152603d602052604081205460385482919081101580610ab85750603654603b5410155b15610ac95750600093849350915050565b600081603754610ad991906129cf565b905060008113610ae7575060015b6000603b54603654610af991906129a9565b905081811015610b1157506000958695509350505050565b81610b2984603854610b2391906129a9565b8361234f565b94509450505050915091565b6001600160a01b0381166000908152603e6020526040812054610b5783611952565b61073391906129a9565b60003381610b6f8286610f49565b905083811015610bcf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610802565b6107b3828686840361182e565b600061072f338484611a13565b610bf1610ef6565b610c345760405162461bcd60e51b8152602060048201526014602482015273151c985b9cd9995c881b9bdd08185b1b1bddd95960621b6044820152606401610802565b6033805460ff191660021790556000610c4b612365565b9050600081603b54610c5d91906129a9565b9050610c676123ac565b508115610d7d576040805490518381526001600160a01b03909116907f895568f6ca901fcfd3c42d128491c1236d604e180c67c6418706d7cf2fc0b1ca9060200160405180910390a260425460ff1615610cdd57603454604054610cd8916001600160a01b03908116911684612462565b610d7d565b6040805490516000916001600160a01b03169084908381818185875af1925050503d8060008114610d2a576040519150601f19603f3d011682016040523d82523d6000602084013e610d2f565b606091505b5050905080610d7b5760405162461bcd60e51b81526020600482015260186024820152772330b4b632b2103a37903a3930b739b332b91022ba3432b960411b6044820152606401610802565b505b6033546040518281526101009091046001600160a01b0316907f895568f6ca901fcfd3c42d128491c1236d604e180c67c6418706d7cf2fc0b1ca9060200160405180910390a260425460ff1615610df457603454603354610df0916001600160a01b039081169161010090041683612462565b5050565b60335460405160009161010090046001600160a01b03169083905b60006040518083038185875af1925050503d8060008114610e4c576040519150601f19603f3d011682016040523d82523d6000602084013e610e51565b606091505b5050905080610e9d5760405162461bcd60e51b81526020600482015260186024820152772330b4b632b2103a37903a3930b739b332b91022ba3432b960411b6044820152606401610802565b505050565b60425460ff1615610eea5760405162461bcd60e51b8152602060048201526012602482015271115512081bdb9b1e48199b8818d85b1b195960721b6044820152606401610802565b610ef4333461210c565b565b6000610f04603a5442101590565b8015610f145750603554603b5410155b80610f235750603654603b5410155b8015610a1e5750600060335460ff166002811115610f4357610f4361286e565b14905090565b6001600160a01b039182166000908152603f6020908152604080832093909416825291909152205490565b610f7c61104a565b610fc85760405162461bcd60e51b815260206004820152601860248201527f46756e64732063616e6e6f7420626520756e6c6f636b656400000000000000006044820152606401610802565b6033805460ff191660011790556040517f552670ff675a9be10b4cab1e93ea5cffbaf9199dbe09f0e1c1bc31fa9a56dd1390600090a1565b60008060335460ff16600281111561101a5761101a61286e565b14801561102a5750603654603b54105b801561103857506039544210155b8015610a1e5750603a54421015610a1c565b60008060335460ff1660028111156110645761106461286e565b148015610a1e57506276a700603a5461107d91906129bc565b421015905090565b600054610100900460ff16158080156110a55750600054600160ff909116105b806110bf5750303b1580156110bf575060005460ff166001145b6111225760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610802565b6000805460ff191660011790558015611145576000805461ff0019166101001790555b6001600160a01b038c1661119b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e742061646472657373000000000000006044820152606401610802565b426111a7603c896129bc565b10156111ea5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073746172742074696d6560701b6044820152606401610802565b856111f7610708896129bc565b111561123a5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642074696d652072616e676560701b6044820152606401610802565b428611801561125457506276a70061125288886129a9565b105b6112935760405162461bcd60e51b815260206004820152601060248201526f496e76616c696420656e642074696d6560801b6044820152606401610802565b60008b116112da5760405162461bcd60e51b815260206004820152601460248201527304d696e20676f616c206d757374206265203e20360641b6044820152606401610802565b898b111561132a5760405162461bcd60e51b815260206004820152601c60248201527f4d696e20676f616c206d757374206265203c3d204d617820676f616c000000006044820152606401610802565b6000891161137a5760405162461bcd60e51b815260206004820152601c60248201527f4d696e20636f6e747269627574696f6e206d757374206265203e2030000000006044820152606401610802565b878911156113df5760405162461bcd60e51b815260206004820152602c60248201527f4d696e20636f6e747269627574696f6e206d757374206265203c3d204d61782060448201526b31b7b73a3934b13aba34b7b760a11b6064820152608401610802565b6113e98b8b6129a9565b8910806113f65750886001145b61145e5760405162461bcd60e51b815260206004820152603360248201527f4d696e20636f6e747269627574696f6e206d757374206265203c20286d6178476044820152726f616c202d206d696e476f616c29206f72203160681b6064820152608401610802565b6104e261ffff841611156114ac5760405162461bcd60e51b81526020600482015260156024820152740a8e4c2dce6cccae440cccaca40e8dede40d0d2ced605b1b6044820152606401610802565b6104e261ffff831611156114f75760405162461bcd60e51b81526020600482015260126024820152710b2d2cad8c840cccaca40e8dede40d0d2ced60731b6044820152606401610802565b6001600160a01b038416156115825760008361ffff16118061151d575060008261ffff16115b61157d5760405162461bcd60e51b815260206004820152602b60248201527f46656573207265717569726564207768656e2066656520726563697069656e7460448201526a081a5cc81c1c995cd95b9d60aa1b6064820152608401610802565b6115f8565b61ffff8316158015611596575061ffff8216155b6115f85760405162461bcd60e51b815260206004820152602d60248201527f46656573206d7573742062652030207768656e207468657265206973206e6f2060448201526c199959481c9958da5c1a595b9d609a1b6064820152608401610802565b603380546001600160a01b03808f1661010002610100600160a81b031983168117845560358f905560368e905560378d905560388c905560398b9055603a8a9055603480548a84166001600160a01b031990911681179091556042805460ff199081169215159290921790556040805461ffff898116600160b01b0261ffff60b01b19918c16600160a01b026001600160b01b0319909316968d16969096179190911716939093179092556000603b819055603c819055939291166001600160a81b03199091161760018302179055506116d06124c5565b8015611716576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60425460ff1661176d5760405162461bcd60e51b8152602060048201526014602482015273195c98cc8c081bdb9b1e48199b8818d85b1b195960621b6044820152606401610802565b80600260335460ff1660028111156117875761178761286e565b146117cc5760405162461bcd60e51b815260206004820152601560248201527410d85b9b9bdd081858d8d95c1d081c185e5b595b9d605a1b6044820152606401610802565b6000811161180a5760405162461bcd60e51b815260206004820152600b60248201526a0416d6f756e7420697320360ac1b6044820152606401610802565b611812611c50565b611825336118203385611f38565b611ca9565b610df060018055565b6001600160a01b0383166118905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610802565b6001600160a01b0382166118f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610802565b6001600160a01b038381166000818152603f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000603b5460000361196657506000919050565b603b546041546001600160a01b0384166000908152603d602052604090205461198f91906129f6565b6107339190612a0d565b60006119a58484610f49565b90506000198114611a0d5781811015611a005760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610802565b611a0d848484840361182e565b50505050565b6001600160a01b038316611a775760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610802565b6001600160a01b038216611ad95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610802565b6001600160a01b0383166000908152603d602052604090205481811015611b515760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610802565b6001600160a01b038085166000908152603d60205260408082208585039055918516815220805483019055600260335460ff166002811115611b9557611b9561286e565b03611bfd576001600160a01b0384166000908152603e60205260408120549082611bbf83866129f6565b611bc99190612a0d565b6001600160a01b038088166000908152603e6020526040808220958490039095559087168152929092208054909201909155505b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c4291815260200190565b60405180910390a350505050565b600260015403611ca25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610802565b6002600155565b816001600160a01b03167f5afeca38b2064c23a692c4cf353015d80ab3ecc417b4f893f372690c11fbd9a682604051611ce491815260200190565b60405180910390a28060416000828254611cfe91906129bc565b90915550505050565b60018055565b6000611d1882610b35565b905060008111611d575760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b6044820152606401610802565b6001600160a01b0382166000908152603e602052604081208054839290611d7f9084906129bc565b9250508190555080603c6000828254611d9891906129bc565b90915550506040518181526001600160a01b038316907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a260425460ff1615611dfd57603454610df0906001600160a01b03168383612462565b6000826001600160a01b031682604051610e0f565b6001600160a01b0381166000908152603d602052604090205480611e655760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b6044820152606401610802565b6001600160a01b0382166000908152603d60205260408120819055603b8054839290611e929084906129a9565b90915550506040518181526001600160a01b038316907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a26040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360425460ff1615611dfd57603454610df0906001600160a01b03168383612462565b603454604051636eb1769f60e11b815233600482015230602482015260009182916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa158015611f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faf9190612a2f565b9050808311156120015760405162461bcd60e51b815260206004820152601e60248201527f416d6f756e74206578636565647320746f6b656e20616c6c6f77616e636500006044820152606401610802565b6034546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190612a2f565b603454909150612089906001600160a01b03168630876124f4565b6034546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190612a2f565b905061210282826129a9565b9695505050505050565b80612115611000565b6121615760405162461bcd60e51b815260206004820152601d60248201527f436f6e747269627574696f6e7320617265206e6f7420616c6c6f7765640000006044820152606401610802565b336000908152603d602052604081205461217c9083906129bc565b90506037548110156121d05760405162461bcd60e51b815260206004820152601e60248201527f436f6e747269627574696f6e20616d6f756e7420697320746f6f206c6f7700006044820152606401610802565b6038548111156122225760405162461bcd60e51b815260206004820152601f60248201527f436f6e747269627574696f6e20616d6f756e7420697320746f6f2068696768006044820152606401610802565b60365482603b5461223391906129bc565b111561228d5760405162461bcd60e51b8152602060048201526024808201527f436f6e747269627574696f6e20616d6f756e742065786365656473206d61782060448201526319dbd85b60e21b6064820152608401610802565b6001600160a01b0384166000908152603d6020526040812080548592906122b59084906129bc565b9250508190555082603b60008282546122ce91906129bc565b90915550506040518381526001600160a01b038516907f4d154d4aae216bed6d0926db77c00df2b57c6b5ba4eee05775de20facede3a7b9060200160405180910390a26040518381526001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611c42565b600081831061235e5781610793565b5090919050565b604054600090600160a01b900461ffff1681036123825750600090565b604054603b54612710916123a291600160a01b90910461ffff16906129f6565b610a1e9190612a0d565b604054600090600160b01b900461ffff1681036123c95750600090565b6040546000906123e690600160b01b900461ffff16612710612a48565b604054603b5461ffff9283169261240592600160b01b900416906129f6565b61240f9190612a0d565b604080546001600160a01b03166000908152603d6020529081208054929350839290919061243e9084906129bc565b9250508190555080603b600082825461245791906129bc565b909155509092915050565b6040516001600160a01b038316602482015260448101829052610e9d90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261252c565b600054610100900460ff166124ec5760405162461bcd60e51b815260040161080290612a63565b610ef4612601565b6040516001600160a01b0380851660248301528316604482015260648101829052611a0d9085906323b872dd60e01b9060840161248e565b6000612581826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126289092919063ffffffff16565b90508051600014806125a25750808060200190518101906125a29190612aae565b610e9d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610802565b600054610100900460ff16611d075760405162461bcd60e51b815260040161080290612a63565b6060612637848460008561263f565b949350505050565b6060824710156126a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610802565b600080866001600160a01b031685876040516126bc9190612af4565b60006040518083038185875af1925050503d80600081146126f9576040519150601f19603f3d011682016040523d82523d6000602084013e6126fe565b606091505b509150915061270f8783838761271a565b979650505050505050565b60608315612789578251600003612782576001600160a01b0385163b6127825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610802565b5081612637565b612637838381511561279e5781518083602001fd5b8060405162461bcd60e51b81526004016108029190612b10565b80356001600160a01b03811681146127cf57600080fd5b919050565b600080604083850312156127e757600080fd5b6127f0836127b8565b946020939093013593505050565b60006020828403121561281057600080fd5b610793826127b8565b60008060006060848603121561282e57600080fd5b612837846127b8565b9250612845602085016127b8565b9150604084013590509250925092565b60006020828403121561286757600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106128a657634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156128bf57600080fd5b6128c8836127b8565b91506128d6602084016127b8565b90509250929050565b803561ffff811681146127cf57600080fd5b60008060008060008060008060008060006101608c8e03121561291357600080fd5b61291c8c6127b8565b9a5060208c0135995060408c0135985060608c0135975060808c0135965060a08c0135955060c08c0135945061295460e08d016127b8565b93506129636101008d016127b8565b92506129726101208d016128df565b91506129816101408d016128df565b90509295989b509295989b9093969950565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073357610733612993565b8082018082111561073357610733612993565b81810360008312801583831316838312821617156129ef576129ef612993565b5092915050565b808202811582820484141761073357610733612993565b600082612a2a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a4157600080fd5b5051919050565b61ffff8281168282160390808211156129ef576129ef612993565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612ac057600080fd5b8151801515811461079357600080fd5b60005b83811015612aeb578181015183820152602001612ad3565b50506000910152565b60008251612b06818460208701612ad0565b9190910192915050565b6020815260008251806020840152612b2f816040850160208701612ad0565b601f01601f1916919091016040019291505056fea26469706673582212209c7e149b067c32a5ce5b8845a75b1e3b62f5fa3c92331bc00c421257e16df0a664736f6c63430008110033