0 txs
120.9k calls
constructor
No constructor.
functions
accessControl
viewfunction accessControl() view returns (address)
admin
viewfunction admin() view returns (address)
baseRateMantissa
viewfunction baseRateMantissa() view returns (uint256)
comptroller
viewfunction comptroller() view returns (address)
floatRateMantissa
viewfunction floatRateMantissa() view returns (uint256)
getBlocksPerYear
viewfunction getBlocksPerYear() view returns (uint256)
getMintableVAI
viewfunction getMintableVAI(address minter) view returns (uint256, uint256)
getVAIAddress
viewfunction getVAIAddress() view returns (address)
getVAICalculateRepayAmount
viewfunction getVAICalculateRepayAmount(address borrower, uint256 repayAmount) view returns (uint256, uint256, uint256)
getVAIMinterInterestIndex
viewfunction getVAIMinterInterestIndex(address minter) view returns (uint256)
getVAIRepayAmount
viewfunction getVAIRepayAmount(address account) view returns (uint256)
getVAIRepayRate
viewfunction getVAIRepayRate() view returns (uint256)
getVAIRepayRatePerBlock
viewfunction getVAIRepayRatePerBlock() view returns (uint256)
INITIAL_VAI_MINT_INDEX
viewfunction INITIAL_VAI_MINT_INDEX() view returns (uint256)
isVenusVAIInitialized
viewfunction isVenusVAIInitialized() view returns (bool)
mintCap
viewfunction mintCap() view returns (uint256)
mintEnabledOnlyForPrimeHolder
viewfunction mintEnabledOnlyForPrimeHolder() view returns (bool)
pastVAIInterest
viewfunction pastVAIInterest(address) view returns (uint256)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
pendingVAIControllerImplementation
viewfunction pendingVAIControllerImplementation() view returns (address)
prime
viewfunction prime() view returns (address)
receiver
viewfunction receiver() view returns (address)
treasuryAddress
viewfunction treasuryAddress() view returns (address)
treasuryGuardian
viewfunction treasuryGuardian() view returns (address)
treasuryPercent
viewfunction treasuryPercent() view returns (uint256)
vaiControllerImplementation
viewfunction vaiControllerImplementation() view returns (address)
vaiMintIndex
viewfunction vaiMintIndex() view returns (uint256)
venusVAIMinterIndex
viewfunction venusVAIMinterIndex(address) view returns (uint256)
venusVAIState
viewfunction venusVAIState() view returns (uint224 index, uint32 block)
_become
nonpayablefunction _become(address unitroller)
_setComptroller
nonpayablefunction _setComptroller(address comptroller_) returns (uint256)
_setTreasuryData
nonpayablefunction _setTreasuryData(address newTreasuryGuardian, address newTreasuryAddress, uint256 newTreasuryPercent) returns (uint256)
accrueVAIInterest
nonpayablefunction accrueVAIInterest()
initialize
nonpayablefunction initialize()
liquidateVAI
nonpayablefunction liquidateVAI(address borrower, uint256 repayAmount, address vTokenCollateral) returns (uint256, uint256)
mintVAI
nonpayablefunction mintVAI(uint256 mintVAIAmount) returns (uint256)
repayVAI
nonpayablefunction repayVAI(uint256 amount) returns (uint256, uint256)
repayVAIBehalf
nonpayablefunction repayVAIBehalf(address borrower, uint256 amount) returns (uint256, uint256)
setAccessControl
nonpayablefunction setAccessControl(address newAccessControlAddress)
setBaseRate
nonpayablefunction setBaseRate(uint256 newBaseRateMantissa)
setFloatRate
nonpayablefunction setFloatRate(uint256 newFloatRateMantissa)
setMintCap
nonpayablefunction setMintCap(uint256 _mintCap)
setPrimeToken
nonpayablefunction setPrimeToken(address prime_)
setReceiver
nonpayablefunction setReceiver(address newReceiver)
setVAIToken
nonpayablefunction setVAIToken(address vai_)
toggleOnlyPrimeHolderMint
nonpayablefunction toggleOnlyPrimeHolderMint() returns (uint256)
events
Failure
event Failure(uint256 error, uint256 info, uint256 detail)
LiquidateVAI
event LiquidateVAI(address liquidator, address borrower, uint256 repayAmount, address vTokenCollateral, uint256 seizeTokens)
MintFee
event MintFee(address minter, uint256 feeAmount)
MintOnlyForPrimeHolder
event MintOnlyForPrimeHolder(bool previousMintEnabledOnlyForPrimeHolder, bool newMintEnabledOnlyForPrimeHolder)
MintVAI
event MintVAI(address minter, uint256 mintVAIAmount)
NewAccessControl
event NewAccessControl(address oldAccessControlAddress, address newAccessControlAddress)
NewComptroller
event NewComptroller(address oldComptroller, address newComptroller)
NewPrime
event NewPrime(address oldPrime, address newPrime)
NewTreasuryAddress
event NewTreasuryAddress(address oldTreasuryAddress, address newTreasuryAddress)
NewTreasuryGuardian
event NewTreasuryGuardian(address oldTreasuryGuardian, address newTreasuryGuardian)
NewTreasuryPercent
event NewTreasuryPercent(uint256 oldTreasuryPercent, uint256 newTreasuryPercent)
NewVAIBaseRate
event NewVAIBaseRate(uint256 oldBaseRateMantissa, uint256 newBaseRateMantissa)
NewVAIFloatRate
event NewVAIFloatRate(uint256 oldFloatRateMantissa, uint256 newFlatRateMantissa)
NewVAIMintCap
event NewVAIMintCap(uint256 oldMintCap, uint256 newMintCap)
NewVAIReceiver
event NewVAIReceiver(address oldReceiver, address newReceiver)
NewVaiToken
event NewVaiToken(address oldVaiToken, address newVaiToken)
RepayVAI
event RepayVAI(address payer, address borrower, uint256 repayVAIAmount)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506143f4806100206000396000f3fe608060405234801561001057600080fd5b50600436106102895760003560e01c8063691e45ac1161015c578063b49b1005116100ce578063d24febad11610087578063d24febad14610654578063e44e61681461068a578063ee1fa41e146106ba578063f20fd8f4146106c2578063f7260d3e146106e8578063f851a440146106f057610289565b8063b49b100514610606578063b9ee87261461060e578063c32094c714610616578063c5f956af1461063c578063c7ee005e14610644578063cbeb2b281461064c57610289565b806376c71ca11161012057806376c71ca1146105b857806378c2f922146105c05780638129fc1c146105e6578063b06bb426146105ee578063b2b481bc146105f6578063b2eafc39146105fe57610289565b8063691e45ac1461051b5780636fe74a2114610565578063718da7ee14610582578063741de148146105a857806375c3de43146105b057610289565b80633785d1d6116102005780635ce73240116101b95780635ce73240146104b95780635fe3b567146104c157806360c954ef146104c957806361b3311c146104e5578063650979541461050b578063657bdf941461051357610289565b80633785d1d61461040e5780633b5a0a64146104345780633b72fbef146104515780634070a0c9146104595780634576b5db146104765780634712ee7d1461049c57610289565b80631d08837b116102525780631d08837b1461034b5780631d504dc6146103685780631f040ff51461038e578063234f8977146103ba57806324650602146103e0578063267822471461040657610289565b80623b58841461028e57806304ef9d58146102b257806311b3d5e7146102cc57806313007d551461031b57806319129e5a14610323575b600080fd5b6102966106f8565b604080516001600160a01b039092168252519081900360200190f35b6102ba610707565b60408051918252519081900360200190f35b610302600480360360608110156102e257600080fd5b506001600160a01b0381358116916020810135916040909101351661070d565b6040805192835260208301919091528051918290030190f35b610296610825565b6103496004803603602081101561033957600080fd5b50356001600160a01b0316610834565b005b6103496004803603602081101561036157600080fd5b50356108ef565b6103496004803603602081101561037e57600080fd5b50356001600160a01b031661096b565b610302600480360360408110156103a457600080fd5b506001600160a01b038135169060200135610aca565b6102ba600480360360208110156103d057600080fd5b50356001600160a01b0316610b4a565b6102ba600480360360208110156103f657600080fd5b50356001600160a01b0316610b81565b610296610b93565b6103026004803603602081101561042457600080fd5b50356001600160a01b0316610ba2565b6103496004803603602081101561044a57600080fd5b5035611552565b6102ba6115cf565b6103496004803603602081101561046f57600080fd5b50356115d5565b6102ba6004803603602081101561048c57600080fd5b50356001600160a01b0316611650565b6102ba600480360360208110156104b257600080fd5b50356116de565b6102ba611c7f565b610296611c85565b6104d1611c94565b604080519115158252519081900360200190f35b610349600480360360208110156104fb57600080fd5b50356001600160a01b0316611c9d565b6102ba611d57565b6102ba611d63565b6105476004803603604081101561053157600080fd5b506001600160a01b038135169060200135611e42565b60408051938452602084019290925282820152519081900360600190f35b6103026004803603602081101561057b57600080fd5b50356123bc565b6103496004803603602081101561059857600080fd5b50356001600160a01b0316612431565b6102ba6124ed565b6102ba6124f5565b6102ba61256c565b6102ba600480360360208110156105d657600080fd5b50356001600160a01b0316612572565b610349612807565b6102966128ce565b6102ba6128dd565b6102966128e3565b6103496128f2565b6102ba6129fb565b6103496004803603602081101561062c57600080fd5b50356001600160a01b0316612cc9565b610296612d83565b610296612d92565b610296612da1565b6102ba6004803603606081101561066a57600080fd5b506001600160a01b03813581169160208101359091169060400135612db0565b610692612f53565b604080516001600160e01b03909316835263ffffffff90911660208301528051918290030190f35b6104d1612f71565b6102ba600480360360208110156106d857600080fd5b50356001600160a01b0316612f81565b610296612f93565b610296612fa2565b6002546001600160a01b031681565b600a5481565b600b54600090819060ff16610756576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b600b805460ff19169055610768612fb1565b6000836001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156107a557600080fd5b505af11580156107b9573d6000803e3d6000fd5b505050506040513d60208110156107cf57600080fd5b5051905080156107fc576107ef8160068111156107e857fe5b6008613068565b92506000915061080e9050565b610808338787876130ce565b92509250505b600b805460ff191660011790559094909350915050565b6014546001600160a01b031681565b6000546001600160a01b03163314610884576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b61088d81613629565b601480546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517f0f1eca7612e020f6e4582bcead0573eba4b5f7b56668754c6aed82ef12057dd49281900390910190a15050565b6109246040518060400160405280601481526020017373657442617365526174652875696e743235362960601b81525061367c565b600c805490829055604080518281526020810184905281517fc84c32795e68685ec107b0e94ae126ef464095f342c7e2e0fec06a23d2e8677e929181900390910190a15050565b806001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a457600080fd5b505afa1580156109b8573d6000803e3d6000fd5b505050506040513d60208110156109ce57600080fd5b50516001600160a01b03163314610a165760405162461bcd60e51b81526004018080602001828103825260278152602001806143996027913960400191505060405180910390fd5b806001600160a01b031663c1e803346040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a5157600080fd5b505af1158015610a65573d6000803e3d6000fd5b505050506040513d6020811015610a7b57600080fd5b505115610ac7576040805162461bcd60e51b815260206004820152601560248201527418da185b99d9481b9bdd08185d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b50565b600b54600090819060ff16610b13576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b600b805460ff19169055610b2684613629565b610b30848461379d565b91509150600b805460ff1916600117905590939092509050565b6001600160a01b03811660009081526011602052604081205480610b7957670de0b6b3a7640000915050610b7c565b90505b919050565b60076020526000908152604090205481565b6001546001600160a01b031681565b6015546000908190600160a01b900460ff168015610c36575060155460408051630e3da90d60e21b81526001600160a01b038681166004830152915191909216916338f6a434916024808301926020929190829003018186803b158015610c0857600080fd5b505afa158015610c1c573d6000803e3d6000fd5b505050506040513d6020811015610c3257600080fd5b5051155b15610c47575060029050600061154d565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9757600080fd5b505afa158015610cab573d6000803e3d6000fd5b505050506040513d6020811015610cc157600080fd5b50516004805460408051632aff3bff60e21b81526001600160a01b03898116948201949094529051939450606093929091169163abfceffc91602480820192600092909190829003018186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d5757600080fd5b8101908080516040519392919084640100000000821115610d7757600080fd5b908301906020820185811115610d8c57600080fd5b8251866020820283011164010000000082111715610da957600080fd5b82525081516020918201928201910280838360005b83811015610dd6578181015183820152602001610dbe565b505050509050016040525050509050610ded6141b6565b815160009081905b8082101561128257848281518110610e0957fe5b60200260200101516001600160a01b031663c37f68e28a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b158015610e6657600080fd5b505afa158015610e7a573d6000803e3d6000fd5b505050506040513d6080811015610e9057600080fd5b5080516020820151604083015160609093015160e088015260c087019290925260a086019190915280855215610ed55760035b97506000965061154d95505050505050565b60405180602001604052808560e00151815250846101200181905250856001600160a01b031663fc57d4df868481518110610f0c57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f5a57600080fd5b505afa158015610f6e573d6000803e3d6000fd5b505050506040513d6020811015610f8457600080fd5b50516101008501819052610f99576004610ec3565b604080516020810190915261010085015181526101408501819052610120850151610fc3916137ed565b610160860181905260208601826003811115610fdb57fe5b6003811115610fe657fe5b9052506000905084602001516003811115610ffd57fe5b14611009576005610ec3565b61101c8461016001518560a001516138d6565b606086018190526020860182600381111561103357fe5b600381111561103e57fe5b905250600090508460200151600381111561105557fe5b14611061576005610ec3565b60045485516000916001600160a01b031690638e8f294b9088908690811061108557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050604080518083038186803b1580156110d257600080fd5b505afa1580156110e6573d6000803e3d6000fd5b505050506040513d60408110156110fc57600080fd5b506020015160608601519091506111139082613929565b606087018190526020870182600381111561112a57fe5b600381111561113557fe5b905250600090508560200151600381111561114c57fe5b146111675760055b98506000975061154d9650505050505050565b61117d8560600151670de0b6b3a7640000613968565b606087018190526020870182600381111561119457fe5b600381111561119f57fe5b90525060009050856020015160038111156111b657fe5b146111c2576005611154565b6111d485604001518660600151613993565b60408701819052602087018260038111156111eb57fe5b60038111156111f657fe5b905250600090508560200151600381111561120d57fe5b14611219576005611154565b6112318561014001518660c0015187608001516139b9565b608087018190526020870182600381111561124857fe5b600381111561125357fe5b905250600090508560200151600381111561126a57fe5b14611276576005611154565b50600190910190610df5565b60048054604080516315e3f14f60e11b81526001600160a01b038d811694820194909452905160009390921691632bc7e29e91602480820192602092909190829003018186803b1580156112d557600080fd5b505afa1580156112e9573d6000803e3d6000fd5b505050506040513d60208110156112ff57600080fd5b5051905060008115611317576113148b612572565b90505b611325866080015182613993565b608088018190526020880182600381111561133c57fe5b600381111561134757fe5b905250600090508660200151600381111561135e57fe5b1461137a5760055b99506000985061154d975050505050505050565b6114018660400151600460009054906101000a90046001600160a01b03166001600160a01b031663bec04f726040518163ffffffff1660e01b815260040160206040518083038186803b1580156113d057600080fd5b505afa1580156113e4573d6000803e3d6000fd5b505050506040513d60208110156113fa57600080fd5b5051613929565b8760200181975082600381111561141457fe5b600381111561141f57fe5b905250600090508660200151600381111561143657fe5b146114725760405162461bcd60e51b81526004018080602001828103825260228152602001806142616022913960400191505060405180910390fd5b61147e85612710613968565b8760200181975082600381111561149157fe5b600381111561149c57fe5b90525060009050866020015160038111156114b357fe5b146114ef5760405162461bcd60e51b81526004018080602001828103825260228152602001806142616022913960400191505060405180910390fd5b6114fd858760800151613a15565b8760200181975082600381111561151057fe5b600381111561151b57fe5b905250600090508660200151600381111561153257fe5b1461153e576002611366565b60009950939750505050505050505b915091565b61158860405180604001604052806015815260200174736574466c6f6174526174652875696e743235362960581b81525061367c565b600d805490829055604080518281526020810184905281517f546fb35dbbd92233aecc22b5a11a6791e5db7ec14f62e49cbac2a10c0437f561929181900390910190a15050565b600c5481565b611609604051806040016040528060138152602001727365744d696e744361702875696e743235362960681b81525061367c565b6013805490829055604080518281526020810184905281517f43862b3eea2df8fce70329f3f84cbcad220f47a73be46c5e00df25165a6e1695929181900390910190a15050565b600080546001600160a01b031633146116765761166f60016002613068565b9050610b7c565b600480546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d929181900390910190a160009392505050565b600b5460009060ff16611725576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b600b805460ff191690556004546001600160a01b031661174757506000611c6d565b61175082613a38565b611758612fb1565b6117606128f2565b601654604080516318160ddd60e01b8152905160009233926001600160a01b0390911691849183916318160ddd91600480820192602092909190829003018186803b1580156117ae57600080fd5b505afa1580156117c2573d6000803e3d6000fd5b505050506040513d60208110156117d857600080fd5b5051905060006117e88288613a84565b9050601354811115611834576040805162461bcd60e51b815260206004820152601060248201526f1b5a5b9d0818d85c081c995858da195960821b604482015290519081900360640190fd5b600061183f85610ba2565b909650905085156118815760405162461bcd60e51b81526004018080602001828103825260218152602001806143786021913960400191505060405180910390fd5b808811156118d6576040805162461bcd60e51b815260206004820152601960248201527f6d696e74696e67206d6f7265207468616e20616c6c6f77656400000000000000604482015290519081900360640190fd5b60048054604080516315e3f14f60e11b81526001600160a01b0389811694820194909452905160009390921691632bc7e29e91602480820192602092909190829003018186803b15801561192957600080fd5b505afa15801561193d573d6000803e3d6000fd5b505050506040513d602081101561195357600080fd5b5051905080156119b957600061196887612572565b905060006119768284613aba565b6001600160a01b03891660009081526012602052604090205490915061199c9082613a84565b6001600160a01b0389166000908152601260205260409020555090505b60006119c5828b613a84565b600480546040805163fd51a3ad60e01b81526001600160a01b038c81169482019490945260248101859052905193945091169163fd51a3ad916044808201926020929091908290030181600087803b158015611a2057600080fd5b505af1158015611a34573d6000803e3d6000fd5b505050506040513d6020811015611a4a57600080fd5b505197508715611a99576040805162461bcd60e51b815260206004820152601560248201527431b7b6b83a3937b63632b9103932b532b1ba34b7b760591b604482015290519081900360640190fd5b6000600a54600014611b8a576000611ac4611ab68d600a54613af4565b670de0b6b3a7640000613b36565b9050611ad08c82613aba565b600954604080516340c10f1960e01b81526001600160a01b039283166004820152602481018590529051929450908a16916340c10f199160448082019260009290919082900301818387803b158015611b2857600080fd5b505af1158015611b3c573d6000803e3d6000fd5b5050604080516001600160a01b038d1681526020810185905281517fb0715a6d41a37c1b0672c22c09a31a0642c1fb3f9efa2d5fd5c6d2d891ee78c69450908190039091019150a150611b8d565b50895b866001600160a01b03166340c10f1989836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611bed57600080fd5b505af1158015611c01573d6000803e3d6000fd5b5050600f546001600160a01b038b1660008181526011602090815260409182902093909355805191825291810185905281517e2e68ab1600fc5e7290e2ceaa79e2f86b4dbaca84a48421e167e0b40409218a9450908190039091019150a1600099505050505050505050505b600b805460ff19166001179055919050565b600d5481565b6004546001600160a01b031681565b60065460ff1681565b6000546001600160a01b03163314611ced576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b601654604080516001600160a01b039283168152918316602083015280517fe45150fb0a88e2274ecbca05ddde9925dd64b6e126ae0fa23ee2d42e668a49d39281900390910190a1601680546001600160a01b0319166001600160a01b0392909216919091179055565b670de0b6b3a764000081565b6000611da36040518060400160405280601b81526020017f746f67676c654f6e6c795072696d65486f6c6465724d696e742829000000000081525061367c565b601554600160a01b900460ff16158015611dc657506015546001600160a01b0316155b15611dd357506002611e3f565b60155460408051600160a01b90920460ff161580158352602083015280517f8efa7b6021d602e0cdef814b7435609ee40deb2a0352ca676d10045750516a5f9281900390910190a16015805460ff60a01b198116600160a01b9182900460ff1615909102179055600090505b90565b6000806000806000611e5387612572565b60048054604080516315e3f14f60e11b81526001600160a01b038c8116948201949094529051939450600093611edd9386931691632bc7e29e916024808301926020929190829003018186803b158015611eac57600080fd5b505afa158015611ec0573d6000803e3d6000fd5b505050506040513d6020811015611ed657600080fd5b5051613a15565b90935090506000836003811115611ef057fe5b14611f2c5760405162461bcd60e51b81526004018080602001828103825260228152602001806142836022913960400191505060405180910390fd5b6001600160a01b038816600090815260126020526040902054611f4f9082613993565b90935090506000836003811115611f6257fe5b14611f9e5760405162461bcd60e51b81526004018080602001828103825260228152602001806142836022913960400191505060405180910390fd5b6001600160a01b0388166000908152601260205260408120548290848a1061201e57611fca8585613a15565b90965092506000866003811115611fdd57fe5b146120195760405162461bcd60e51b81526004018080602001828103825260228152602001806142836022913960400191505060405180910390fd5b6123ab565b60006120328b670de0b6b3a7640000613929565b9097509050600087600381111561204557fe5b14612097576040805162461bcd60e51b815260206004820152601b60248201527f5641495f504152545f43414c43554c4154494f4e5f4641494c45440000000000604482015290519081900360640190fd5b6120a18187613968565b909750905060008760038111156120b457fe5b14612106576040805162461bcd60e51b815260206004820152601b60248201527f5641495f504152545f43414c43554c4154494f4e5f4641494c45440000000000604482015290519081900360640190fd5b60006121128787613a15565b9098509050600088600381111561212557fe5b146121615760405162461bcd60e51b81526004018080602001828103825260248152602001806143336024913960400191505060405180910390fd5b61216b8183613929565b9098509450600088600381111561217e57fe5b146121ba5760405162461bcd60e51b81526004018080602001828103825260228152602001806142836022913960400191505060405180910390fd5b6121cc85670de0b6b3a7640000613968565b909850945060008860038111156121df57fe5b1461221b5760405162461bcd60e51b81526004018080602001828103825260228152602001806142836022913960400191505060405180910390fd5b6122258683613929565b9098509350600088600381111561223857fe5b146122745760405162461bcd60e51b815260040180806020018281038252602e8152602001806142a5602e913960400191505060405180910390fd5b61228684670de0b6b3a7640000613968565b9098509350600088600381111561229957fe5b146122d55760405162461bcd60e51b815260040180806020018281038252602e8152602001806142a5602e913960400191505060405180910390fd5b6001600160a01b038d166000908152601260205260409020546122f89083613929565b9098509250600088600381111561230b57fe5b146123475760405162461bcd60e51b815260040180806020018281038252602481526020018061423d6024913960400191505060405180910390fd5b61235983670de0b6b3a7640000613968565b9098509250600088600381111561236c57fe5b146123a85760405162461bcd60e51b815260040180806020018281038252602481526020018061423d6024913960400191505060405180910390fd5b50505b919750955093505050509250925092565b600b54600090819060ff16612405576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b600b805460ff19169055612419338461379d565b91509150600b805460ff191660011790559092909150565b6000546001600160a01b03163314612481576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b61248a81613629565b600e80546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f4df62dd7d9cc4f480a167c19c616ae5d5bb40db6d0c2bc66dba57068225f00d8929181900390910190a15050565b6302819a0090565b6000806125006129fb565b9050600080612516836125116124ed565b613968565b9092509050600082600381111561252957fe5b146125655760405162461bcd60e51b81526004018080602001828103825260218152602001806143576021913960400191505060405180910390fd5b9250505090565b60135481565b600080600080600460009054906101000a90046001600160a01b03166001600160a01b0316632bc7e29e866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156125e357600080fd5b505afa1580156125f7573d6000803e3d6000fd5b505050506040513d602081101561260d57600080fd5b50516001600160a01b038616600090815260126020526040812054919250806126368484613a15565b9096509150600086600381111561264957fe5b146126855760405162461bcd60e51b81526004018080602001828103825260298152602001806142d36029913960400191505060405180910390fd5b612699600f546126948a610b4a565b613a15565b909650945060008660038111156126ac57fe5b146126e85760405162461bcd60e51b81526004018080602001828103825260298152602001806142d36029913960400191505060405180910390fd5b6126f28583613929565b9096509050600086600381111561270557fe5b146127415760405162461bcd60e51b81526004018080602001828103825260298152602001806142d36029913960400191505060405180910390fd5b61275381670de0b6b3a7640000613968565b9096509050600086600381111561276657fe5b146127a25760405162461bcd60e51b81526004018080602001828103825260298152602001806142d36029913960400191505060405180910390fd5b6127ac8482613993565b909650935060008660038111156127bf57fe5b146127fb5760405162461bcd60e51b81526004018080602001828103825260298152602001806142d36029913960400191505060405180910390fd5b50919695505050505050565b6000546001600160a01b03163314612857576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b600f54156128a2576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b670de0b6b3a7640000600f556128b6613b69565b601055600019601355600b805460ff19166001179055565b6003546001600160a01b031681565b600f5481565b6008546001600160a01b031681565b6000806129116129006124f5565b60105461290b613b69565b03613929565b9092509050600082600381111561292457fe5b14612976576040805162461bcd60e51b815260206004820152601a60248201527f5641495f494e5445524553545f4143435255455f4641494c4544000000000000604482015290519081900360640190fd5b61298281600f54613993565b9092509050600082600381111561299557fe5b146129e7576040805162461bcd60e51b815260206004820152601a60248201527f5641495f494e5445524553545f4143435255455f4641494c4544000000000000604482015290519081900360640190fd5b600f8190556129f4613b69565b6010555050565b60048054604080516307dc0d1d60e41b8152905160009384936001600160a01b031692637dc0d1d09281830192602092829003018186803b158015612a3f57600080fd5b505afa158015612a53573d6000803e3d6000fd5b505050506040513d6020811015612a6957600080fd5b5051600c5490915060009015612cbe57600d5415612cb2576000826001600160a01b031663fc57d4df612a9a612da1565b6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612ae057600080fd5b505afa158015612af4573d6000803e3d6000fd5b505050506040513d6020811015612b0a57600080fd5b50519050670de0b6b3a7640000811015612ca557600080612b33670de0b6b3a764000084613a15565b90945091506000846003811115612b4657fe5b14612b825760405162461bcd60e51b81526004018080602001828103825260218152602001806143576021913960400191505060405180910390fd5b612b8e82600d54613929565b90945091506000846003811115612ba157fe5b14612bdd5760405162461bcd60e51b81526004018080602001828103825260218152602001806143576021913960400191505060405180910390fd5b612bef82670de0b6b3a7640000613968565b90945091506000846003811115612c0257fe5b14612c3e5760405162461bcd60e51b81526004018080602001828103825260218152602001806143576021913960400191505060405180910390fd5b612c4a82600c54613993565b90945090506000846003811115612c5d57fe5b14612c995760405162461bcd60e51b81526004018080602001828103825260218152602001806143576021913960400191505060405180910390fd5b9450611e3f9350505050565b600c549350505050611e3f565b600c5492505050611e3f565b600092505050611e3f565b6000546001600160a01b03163314612d19576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b601554604080516001600160a01b039283168152918316602083015280517ffb26401242c61b503dd09c29da64a5d4f451549f574b882a40bcdc64ee68b83c9281900390910190a1601580546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b031681565b6015546001600160a01b031681565b6016546001600160a01b031690565b600080546001600160a01b0316331480612dd457506008546001600160a01b031633145b612deb57612de460016017613068565b9050612f4c565b670de0b6b3a76400008210612e47576040805162461bcd60e51b815260206004820152601d60248201527f74726561737572792070657263656e7420636170206f766572666c6f77000000604482015290519081900360640190fd5b6008805460098054600a80546001600160a01b038a81166001600160a01b031980881682179098558a821697851697909717909455908790556040805194841680865260208601969096528051929093169390927f29f06ea15931797ebaed313d81d100963dc22cb213cb4ce2737b5a62b1a8b1e892918290030190a1604080516001600160a01b0380851682528816602082015281517f8de763046d7b8f08b6c3d03543de1d615309417842bb5d2d62f110f65809ddac929181900390910190a1604080518281526020810187905281517f0893f8f4101baaabbeb513f96761e7a36eb837403c82cc651c292a4abdc94ed7929181900390910190a1600093505050505b9392505050565b6005546001600160e01b03811690600160e01b900463ffffffff1682565b601554600160a01b900460ff1681565b60126020526000908152604090205481565b600e546001600160a01b031681565b6000546001600160a01b031681565b600480546040805163084bf5ab60e31b815290516001600160a01b039092169263425fad58928282019260209290829003018186803b158015612ff357600080fd5b505afa158015613007573d6000803e3d6000fd5b505050506040513d602081101561301d57600080fd5b505115613066576040805162461bcd60e51b81526020600482015260126024820152711c1c9bdd1bd8dbdb081a5cc81c185d5cd95960721b604482015290519081900360640190fd5b565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083600681111561309757fe5b8360178111156130a357fe5b604080519283526020830191909152600082820152519081900360600190a1826006811115612f4c57fe5b60045460009081906001600160a01b031615613620576130ec6128f2565b6004805460408051632fe3f38f60e11b815230938101939093526001600160a01b038681166024850152898116604485015288811660648501526084840188905290516000939190921691635fc7e71e9160a48082019260209290919082900301818787803b15801561315e57600080fd5b505af1158015613172573d6000803e3d6000fd5b505050506040513d602081101561318857600080fd5b5051905080156131ac5761319f6002600a83613b6d565b9250600091506136209050565b6131b4613b69565b846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156131ed57600080fd5b505afa158015613201573d6000803e3d6000fd5b505050506040513d602081101561321757600080fd5b50511461322a5761319f60026009613068565b866001600160a01b0316866001600160a01b031614156132505761319f6002600f613068565b846132615761319f6002600d613068565b6000198514156132775761319f6002600c613068565b600080613285898989613bdb565b909250905081156132b5576132a682600681111561329f57fe5b6010613068565b94506000935061362092505050565b600480546040805163a78dc77560e01b81526001600160a01b038a8116948201949094526024810185905281516000948594169263a78dc7759260448082019391829003018186803b15801561330a57600080fd5b505afa15801561331e573d6000803e3d6000fd5b505050506040513d604081101561333457600080fd5b5080516020909101519092509050811561337f5760405162461bcd60e51b81526004018080602001828103825260378152602001806142fc6037913960400191505060405180910390fd5b80886001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156133d657600080fd5b505afa1580156133ea573d6000803e3d6000fd5b505050506040513d602081101561340057600080fd5b50511015613455576040805162461bcd60e51b815260206004820152601c60248201527f5641495f4c49515549444154455f5345495a455f544f4f5f4d55434800000000604482015290519081900360640190fd5b6040805163b2a02ff160e01b81526001600160a01b038d811660048301528c811660248301526044820184905291516000928b169163b2a02ff191606480830192602092919082900301818787803b1580156134b057600080fd5b505af11580156134c4573d6000803e3d6000fd5b505050506040513d60208110156134da57600080fd5b505190508015613528576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b604080516001600160a01b03808f168252808e1660208301528183018790528b1660608201526080810184905290517f42d401f96718a0c42e5cea8108973f0022677b7e2e5f4ee19851b2de7a0394e79181900360a00190a160048054604080516347ef3b3b60e01b815230938101939093526001600160a01b038c811660248501528f811660448501528e811660648501526084840188905260a4840186905290519116916347ef3b3b9160c480830192600092919082900301818387803b1580156135f457600080fd5b505af1158015613608573d6000803e3d6000fd5b5060009250613615915050565b975092955050505050505b94509492505050565b6001600160a01b038116610ac7576040805162461bcd60e51b815260206004820152601560248201527463616e2774206265207a65726f206164647265737360581b604482015290519081900360640190fd5b601454604080516318c5e8ab60e01b81523360048201818152602483019384528551604484015285516001600160a01b03909516946318c5e8ab949293879391606490910190602085019080838360005b838110156136e55781810151838201526020016136cd565b50505050905090810190601f1680156137125780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561373057600080fd5b505afa158015613744573d6000803e3d6000fd5b505050506040513d602081101561375a57600080fd5b5051610ac7576040805162461bcd60e51b815260206004820152600d60248201526c1858d8d95cdcc819195b9a5959609a1b604482015290519081900360640190fd5b60045460009081906001600160a01b03166137bd575060009050806137e6565b6137c683613a38565b6137ce612fb1565b6137d66128f2565b6137e1338585613bdb565b915091505b9250929050565b60006137f7614229565b60008061380c86600001518660000151613929565b9092509050600082600381111561381f57fe5b1461383e575060408051602081019091526000815290925090506137e6565b6000806138536706f05b59d3b2000084613993565b9092509050600082600381111561386657fe5b14613888575060408051602081019091526000815290945092506137e6915050565b60008061389d83670de0b6b3a7640000613968565b909250905060008260038111156138b057fe5b146138b757fe5b604080516020810190915290815260009a909950975050505050505050565b60008060006138e3614229565b6138ed8686613f72565b9092509050600082600381111561390057fe5b1461391157509150600090506137e6565b600061391c82613fda565b9350935050509250929050565b6000808361393c575060009050806137e6565b8383028385828161394957fe5b041461395d575060029150600090506137e6565b6000925090506137e6565b6000808261397c57506001905060006137e6565b600083858161398757fe5b04915091509250929050565b6000808383018481106139ab576000925090506137e6565b5060029150600090506137e6565b60008060006139c6614229565b6139d08787613f72565b909250905060008260038111156139e357fe5b146139f45750915060009050613a0d565b613a06613a0082613fda565b86613993565b9350935050505b935093915050565b600080838311613a2c5750600090508183036137e6565b506003905060006137e6565b60008111610ac7576040805162461bcd60e51b8152602060048201526014602482015273616d6f756e742063616e2774206265207a65726f60601b604482015290519081900360640190fd5b6000612f4c8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250613fe9565b6000612f4c8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250614084565b6000612f4c83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000008152506140de565b6000612f4c83836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250614154565b4390565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0846006811115613b9c57fe5b846017811115613ba857fe5b604080519283526020830191909152818101859052519081900360600190a1836006811115613bd357fe5b949350505050565b6000806000806000613bed8787611e42565b60165460408051632770a7eb60e21b81526001600160a01b038e8116600483015260248201879052915195985093965091945016918291639dc29fac91604480830192600092919082900301818387803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b5050600e54604080516323b872dd60e01b81526001600160a01b038e8116600483015292831660248201526044810188905290516000945091851692506323b872dd91606480830192602092919082900301818787803b158015613cc157600080fd5b505af1158015613cd5573d6000803e3d6000fd5b505050506040513d6020811015613ceb57600080fd5b50519050600181151514613d46576040805162461bcd60e51b815260206004820152601a60248201527f6661696c656420746f207472616e736665722056414920666565000000000000604482015290519081900360640190fd5b60048054604080516315e3f14f60e11b81526001600160a01b038d811694820194909452905160009390921691632bc7e29e91602480820192602092909190829003018186803b158015613d9957600080fd5b505afa158015613dad573d6000803e3d6000fd5b505050506040513d6020811015613dc357600080fd5b505190506000613ddc613dd68389613aba565b86613aba565b6001600160a01b038c16600090815260126020526040902054909150613e029086613aba565b6001600160a01b03808d1660008181526012602090815260408083209590955560048054865163fd51a3ad60e01b8152918201949094526024810187905294519194929093169263fd51a3ad926044808201939182900301818787803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050506040513d6020811015613e9557600080fd5b505190508015613ee4576040805162461bcd60e51b815260206004820152601560248201527431b7b6b83a3937b63632b9103932b532b1ba34b7b760591b604482015290519081900360640190fd5b6000613ef08989613a84565b90507f1db858e6f7e1a0d5e92c10c6507d42b3dabfe0a4867fe90c5a14d9963662ef7e8e8e8360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a160009e909d509b505050505050505050505050565b6000613f7c614229565b600080613f8d866000015186613929565b90925090506000826003811115613fa057fe5b14613fbf575060408051602081019091526000815290925090506137e6565b60408051602081019091529081526000969095509350505050565b51670de0b6b3a7640000900490565b6000838301828582101561407b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614040578181015183820152602001614028565b50505050905090810190601f16801561406d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50949350505050565b600081848411156140d65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614040578181015183820152602001614028565b505050900390565b60008315806140eb575082155b156140f857506000612f4c565b8383028385828161410557fe5b0414839061407b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614040578181015183820152602001614028565b600081836141a35760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315614040578181015183820152602001614028565b508284816141ad57fe5b04949350505050565b6040805161018081019091526000808252602082019081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200161420a614229565b8152602001614217614229565b8152602001614224614229565b905290565b604051806020016040528060008152509056fe5641495f504153545f494e5445524553545f43414c43554c4154494f4e5f4641494c45445641495f4d494e545f414d4f554e545f43414c43554c4154494f4e5f4641494c45445641495f4255524e5f414d4f554e545f43414c43554c4154494f4e5f4641494c45445641495f43555252454e545f494e5445524553545f414d4f554e545f43414c43554c4154494f4e5f4641494c45445641495f544f54414c5f52455041595f414d4f554e545f43414c43554c4154494f4e5f4641494c45445641495f4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c45445641495f4d494e5445445f414d4f554e545f43414c43554c4154494f4e5f4641494c45445641495f52455041595f524154455f43414c43554c4154494f4e5f4641494c4544636f756c64206e6f7420636f6d70757465206d696e7461626c6520616d6f756e746f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676520627261696e73a265627a7a72315820c50a279b2097abb4c1075b20920eb3b23d26cc51bc06d59a15dc6116e8a3f75864736f6c63430005100032