0 txs
1.2k calls
constructor
No constructor.
functions
collateralRequirement
viewfunction collateralRequirement() view returns (uint256)
collateralToken
viewfunction collateralToken() view returns (address)
collateralTokenDecimals
viewfunction collateralTokenDecimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
feePercentage
viewfunction feePercentage() view returns (uint256)
getActiveLPs
viewfunction getActiveLPs() view returns (address[])
getMintTradeInfo
viewfunction getMintTradeInfo(uint256 _collateralAmount) view returns (uint256 synthTokensReceived, uint256 feePaid)
getRedeemTradeInfo
viewfunction getRedeemTradeInfo(uint256 _syntTokensAmount) view returns (uint256 collateralAmountReceived, uint256 feePaid)
getRegisteredLPs
viewfunction getRegisteredLPs() view returns (address[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isActiveLP
viewfunction isActiveLP(address _lp) view returns (bool)
isRegisteredLP
viewfunction isRegisteredLP(address _lp) view returns (bool)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
lendingProtocolInfo
viewfunction lendingProtocolInfo() view returns (string lendingId, address bearingToken)
liquidationReward
viewfunction liquidationReward() view returns (uint256)
MAINTAINER_ROLE
viewfunction MAINTAINER_ROLE() view returns (bytes32)
maxTokensCapacity
viewfunction maxTokensCapacity() view returns (uint256 maxCapacity)
positionLPInfo
viewfunction positionLPInfo(address _lp) view returns (tuple info)
priceFeedIdentifier
viewfunction priceFeedIdentifier() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
synthereumFinder
viewfunction synthereumFinder() view returns (address)
syntheticToken
viewfunction syntheticToken() view returns (address)
syntheticTokenSymbol
viewfunction syntheticTokenSymbol() view returns (string)
totalCollateralAmount
viewfunction totalCollateralAmount() view returns (uint256 usersCollateral, uint256 lpsCollateral, uint256 totalCollateral)
totalSyntheticTokens
viewfunction totalSyntheticTokens() view returns (uint256)
typology
viewfunction typology() view returns (string)
version
viewfunction version() view returns (uint8)
activateLP
nonpayablefunction activateLP(uint256 _collateralAmount, uint128 _overCollateralization) returns (uint256 collateralDeposited)
addLiquidity
nonpayablefunction addLiquidity(uint256 _collateralAmount) returns (uint256 collateralDeposited, uint256 newLpCollateralAmount)
claimLendingRewards
nonpayablefunction claimLendingRewards(tuple _lendingInfo, tuple _poolLendingStorage, address _recipient)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(tuple _params)
liquidate
nonpayablefunction liquidate(address _lp, uint256 _numSynthTokens) returns (uint256)
migrateStorage
nonpayablefunction migrateStorage() returns (uint8 poolVersion, uint256 price, bytes storageBytes)
migrateTotalFunds
nonpayablefunction migrateTotalFunds(address _recipient) returns (uint256 migrationAmount)
mint
nonpayablefunction mint(tuple _mintParams) returns (uint256, uint256)
redeem
nonpayablefunction redeem(tuple _redeemParams) returns (uint256, uint256)
registerLP
nonpayablefunction registerLP(address _lp)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _collateralAmount) returns (uint256 collateralRemoved, uint256 collateralReceived, uint256 newLpCollateralAmount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setFee
nonpayablefunction setFee(uint64 _newFee)
setLiquidationReward
nonpayablefunction setLiquidationReward(uint64 _newLiquidationReward)
setMigratedStorage
nonpayablefunction setMigratedStorage(address _finder, uint8 _oldVersion, bytes _storageBytes, uint8 _newVersion, bytes _extraInputParams, uint256 _sourceCollateralAmount, uint256 _actualCollateralAmount, uint256 _price)
setOvercollateralization
nonpayablefunction setOvercollateralization(uint128 _overCollateralization)
switchLendingModule
nonpayablefunction switchLendingModule(string _lendingId, address _bearingToken)
transferToLendingManager
nonpayablefunction transferToLendingManager(uint256 _bearingAmount) returns (uint256 bearingAmountOut)
updatePositions
nonpayablefunction updatePositions()
events
ActivatedLP
event ActivatedLP(address indexed lp)
DepositedLiquidity
event DepositedLiquidity(address indexed lp, uint256 collateralSent, uint256 collateralDeposited)
Liquidated
event Liquidated(address indexed user, address indexed lp, uint256 synthTokensInLiquidation, uint256 collateralAmount, uint256 bonusAmount, uint256 collateralReceived)
Minted
event Minted(address indexed user, (uint256 totalCollateral, uint256 exchangeAmount, uint256 feeAmount, uint256 numTokens) mintvalues, address recipient)
NewLendingModule
event NewLendingModule(string lendingModuleId)
Redeemed
event Redeemed(address indexed user, (uint256 numTokens, uint256 exchangeAmount, uint256 feeAmount, uint256 collateralAmount) redeemvalues, address recipient)
RegisteredLp
event RegisteredLp(address indexed lp)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetFeePercentage
event SetFeePercentage(uint256 newFee)
SetLiquidationReward
event SetLiquidationReward(uint256 newLiquidationReward)
SetOvercollateralization
event SetOvercollateralization(address indexed lp, uint256 overCollateralization)
WithdrawnLiquidity
event WithdrawnLiquidity(address indexed lp, uint256 collateralWithdrawn, uint256 collateralReceived)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506001600055600c805460ff60e81b1916600160e81b1790556140c6806100386000396000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c80637d9853491161019d578063b2016bd4116100e9578063d547741f116100a2578063e3f3ee501161007c578063e3f3ee50146106c3578063e7ce2361146106d6578063f6bf3ef6146106f9578063f87422541461070a57600080fd5b8063d547741f1461068a578063d668909f1461069d578063e12058a6146106b057600080fd5b8063b2016bd414610621578063b339b36814610632578063b54790d81461064a578063bcbaf4871461065c578063ca15c8731461066f578063d41f51521461068257600080fd5b80639a3e4eb811610156578063a001ecdd11610130578063a001ecdd146105db578063a217fddf146105f3578063a296f330146105fb578063a9509e681461060e57600080fd5b80639a3e4eb8146105a25780639c8f9f23146105b55780639d9ab038146105c857600080fd5b80637d9853491461051b5780638230ecd61461052e5780639010d07c1461055357806391d148541461056657806391eeb1b814610579578063980f23c51461058f57600080fd5b806348e30c3f1161025c57806354fd4d50116102155780635a630d7a116101ef5780635a630d7a146104ca57806363f31d2c146104dd57806367c9770f1461050057806367f7d0291461051357600080fd5b806354fd4d5014610477578063572b6c051461049757806359f68497146104aa57600080fd5b806348e30c3f146104045780634f9b84771461040c57806350d6dbc31461041f57806351c6590a14610427578063525e6b111461044f5780635409b4fa1461046257600080fd5b80632d12647b116102ae5780632d12647b146103a65780632f2ff15d146103ae57806330422cb5146103c157806336568abe146103c957806336815bb7146103dc5780633c0f9fee146103f157600080fd5b80630120ca44146102f657806301ffc9a7146103165780630704e483146103395780630a9356ed1461035a5780631e96838b1461036d578063248a9ca314610382575b600080fd5b6102fe61071f565b60405161030d939291906130b5565b60405180910390f35b6103296103243660046130e0565b610760565b604051901515815260200161030d565b61034c610347366004613122565b61078b565b60405190815260200161030d565b61034c610368366004613156565b610861565b61038061037b366004613122565b61096c565b005b61034c610390366004613182565b6000908152600160208190526040909120015490565b61034c610a42565b6103806103bc36600461319b565b610adf565b610380610b06565b6103806103d736600461319b565b610baa565b6103e4610bcc565b60405161030d91906131cb565b6103806103ff3660046131f5565b610c4d565b61034c610cef565b61038061041a366004613228565b610d10565b600a5461034c565b61043a610435366004613182565b610fb7565b6040805192835260208301919091520161030d565b61043a61045d36600461329c565b6110b2565b61046a6111db565b60405161030d91906132b8565b600c54600160f01b900460ff165b60405160ff909116815260200161030d565b6103296104a5366004613122565b611265565b6104bd6104b8366004613122565b611329565b60405161030d9190613305565b6103806104d83660046131f5565b61141f565b6104e56114c1565b6040805193845260208401929092529082015260600161030d565b61032961050e366004613122565b611568565b600b5461034c565b610380610529366004613380565b611575565b600e546001600160a01b03165b6040516001600160a01b03909116815260200161030d565b61053b6105613660046133bb565b611706565b61032961057436600461319b565b611725565b610581611750565b60405161030d9291906133dd565b61043a61059d366004613182565b6117f6565b61043a6105b036600461329c565b6118a1565b6104e56105c3366004613182565b61194c565b6103806105d6366004613407565b611a4d565b600c54600160a01b90046001600160401b031661034c565b61034c600081565b61038061060936600461348f565b611af4565b61034c61061c366004613182565b611b2c565b600c546001600160a01b031661053b565b600d54600160801b90046001600160401b031661034c565b600c54600160e01b900460ff16610485565b61034c61066a366004613553565b611ba7565b61034c61067d366004613182565b611c51565b61046a611c68565b61038061069836600461319b565b611ca2565b61043a6106ab366004613182565b611cac565b6103806106be36600461357f565b611d02565b6103296106d1366004613122565b611dae565b6103e4604051806040016040528060048152602001631413d3d360e21b81525081565b6003546001600160a01b031661053b565b61034c60008051602061404683398151915281565b600354600090819060609061073c906001600160a01b0316611dbb565b610744611f29565b61074c611fa0565b9194509250905061075b6122f7565b909192565b60006001600160e01b03198216635a05180f60e01b148061078557506107858261247e565b92915050565b6000600260005414156107b95760405162461bcd60e51b81526004016107b0906135ca565b60405180910390fd5b600260005560035460405163bea3c78960e01b81526001600160a01b0380851660048301529091166024820152734c0d505ffac3e8461a6c6abc71f988c5a6ef44989063bea3c789906044015b60206040518083038186803b15801561081e57600080fd5b505af4158015610832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108569190613601565b600160005592915050565b6000600260005414156108865760405162461bcd60e51b81526004016107b0906135ca565b60026000556003547360da38fa211fcb7dd2008bab185a2f90b16db300906321d0564590600490869086906001600160a01b03166108c26124b3565b6040516001600160e01b031960e088901b168152600481019590955260248501939093526001600160801b0390911660448401526001600160a01b03908116606484015216608482015260a4015b60206040518083038186803b15801561092857600080fd5b505af415801561093c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109609190613601565b60016000559392505050565b6002600054141561098f5760405162461bcd60e51b81526004016107b0906135ca565b60026000556109ac60008051602061404683398151915233611725565b6109c85760405162461bcd60e51b81526004016107b09061361a565b604051633573203f60e01b81526004808201526001600160a01b03821660248201527360da38fa211fcb7dd2008bab185a2f90b16db30090633573203f906044015b60006040518083038186803b158015610a2257600080fd5b505af4158015610a36573d6000803e3d6000fd5b50506001600055505050565b60035460405163180d50b960e31b81526004808201526001600160a01b0390911660248201526000907360da38fa211fcb7dd2008bab185a2f90b16db3009063c06a85c89060440160206040518083038186803b158015610aa257600080fd5b505af4158015610ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190613601565b905090565b610ae982826124bd565b6000828152600260205260409020610b0190826124eb565b505050565b60026000541415610b295760405162461bcd60e51b81526004016107b0906135ca565b6002600055600354604051634bad37d360e01b81526004808201526001600160a01b0390911660248201527360da38fa211fcb7dd2008bab185a2f90b16db30090634bad37d39060440160006040518083038186803b158015610b8b57600080fd5b505af4158015610b9f573d6000803e3d6000fd5b505060016000555050565b610bb48282612500565b6000828152600260205260409020610b01908261258e565b600e54604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004828101926000929190829003018186803b158015610c1157600080fd5b505afa158015610c25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ada919081019061372e565b60026000541415610c705760405162461bcd60e51b81526004016107b0906135ca565b6002600055610c8d60008051602061404683398151915233611725565b610ca95760405162461bcd60e51b81526004016107b09061361a565b604051631039b09b60e01b81526004808201526001600160401b03821660248201527360da38fa211fcb7dd2008bab185a2f90b16db30090631039b09b90604401610a0a565b600d54600090610ada906001600160801b0316670de0b6b3a7640000613780565b6003546001600160a01b03166000610d27826125a3565b9050336001600160a01b03821614610d8c5760405162461bcd60e51b815260206004820152602260248201527f53656e646572206d75737420626520746865206c656e64696e67206d616e616760448201526132b960f11b60648201526084016107b0565b600c546001600160a01b0316610da56020860186613122565b6001600160a01b031614610dfb5760405162461bcd60e51b815260206004820152601760248201527f57726f6e6720636f6c6c61746572616c2070617373656400000000000000000060448201526064016107b0565b6000610e068361262f565b60405163072b099f60e31b81523060048201526001600160a01b0391909116906339584cf89060240160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190613798565b90506001600160a01b038116610e9b6040870160208801613122565b6001600160a01b031614610ef15760405162461bcd60e51b815260206004820152601a60248201527f57726f6e672062656172696e6720746f6b656e2070617373656400000000000060448201526064016107b0565b610fae6040518060600160405280602b8152602001614066602b9139610f1a60208901896137b5565b610f2760208a018a613122565b610f3760408b0160208c01613122565b89604051602401610f4c959493929190613824565b60408051601f198184030181529082905291610f6791613862565b604051908190039020602082810180516001600160e01b03166001600160e01b031990931692909217909152610f9f90890189613122565b6001600160a01b031690612676565b50505050505050565b60008060026000541415610fdd5760405162461bcd60e51b81526004016107b0906135ca565b60026000556003547360da38fa211fcb7dd2008bab185a2f90b16db30090631e4bc37f9060049086906001600160a01b03166110176124b3565b6040516001600160e01b031960e087901b168152600481019490945260248401929092526001600160a01b039081166044840152166064820152608401604080518083038186803b15801561106b57600080fd5b505af415801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061387e565b60016000559094909350915050565b600080600260005414156110d85760405162461bcd60e51b81526004016107b0906135ca565b60026000556040830135428110156111285760405162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb88195e1c1a5c9959606a1b60448201526064016107b0565b6003547360da38fa211fcb7dd2008bab185a2f90b16db30090638e15b9639060049087906001600160a01b031661115d6124b3565b6040518563ffffffff1660e01b815260040161117c94939291906138de565b604080518083038186803b15801561119357600080fd5b505af41580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb919061387e565b6001600055909590945092505050565b604051633ee69ef360e21b81526004808201526060907360da38fa211fcb7dd2008bab185a2f90b16db3009063fb9a7bcc906024015b60006040518083038186803b15801561122957600080fd5b505af415801561123d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ada919081019061399d565b6003546040516302abf57960e61b81526f2a393ab9ba32b22337b93bb0b93232b960811b60048201526000916001600160a01b03169063aafd5e409060240160206040518083038186803b1580156112bc57600080fd5b505afa9250505080156112ec575060408051601f3d908101601f191682019092526112e991810190613798565b60015b6112f857506000919050565b806001600160a01b0316836001600160a01b0316141561131b5750600192915050565b50600092915050565b919050565b6113816040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b600354604051634b05b48360e11b81526004808201526001600160a01b03808516602483015290911660448201527360da38fa211fcb7dd2008bab185a2f90b16db3009063960b6906906064016101406040518083038186803b1580156113e757600080fd5b505af41580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078591906139e1565b600260005414156114425760405162461bcd60e51b81526004016107b0906135ca565b600260005561145f60008051602061404683398151915233611725565b61147b5760405162461bcd60e51b81526004016107b09061361a565b6040516359c1d26560e01b81526004808201526001600160401b03821660248201527360da38fa211fcb7dd2008bab185a2f90b16db300906359c1d26590604401610a0a565b6003546040516351955b2d60e11b81526004808201526001600160a01b039091166024820152600090819081907360da38fa211fcb7dd2008bab185a2f90b16db3009063a32ab65a9060440160606040518083038186803b15801561152557600080fd5b505af4158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190613a6b565b925092509250909192565b600061078560068361269b565b600c54600160e81b900460ff16156115ca5760405162461bcd60e51b8152602060048201526018602482015277141bdbdb08185b1c9958591e481a5b9a5d1a585b1a5e995960421b60448201526064016107b0565b600260005414156115ed5760405162461bcd60e51b81526004016107b0906135ca565b60026000556115ff6020820182613122565b600380546001600160a01b0319166001600160a01b039290921691909117905560405163cfd6275160e01b81527360da38fa211fcb7dd2008bab185a2f90b16db3009063cfd62751906116589060049085908201613b13565b60006040518083038186803b15801561167057600080fd5b505af4158015611684573d6000803e3d6000fd5b506116969250600091508190506126bd565b6116af60008051602061404683398151915260006126bd565b6116c960006116c460a0840160808501613122565b61270a565b6116eb6000805160206140468339815191526116c460c0840160a08501613122565b506001600055600c805460ff60e81b1916600160e81b179055565b600082815260026020526040812061171e9083612714565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60035460405162b5b83760e11b81526004808201526001600160a01b0390911660248201526060906000907360da38fa211fcb7dd2008bab185a2f90b16db3009063016b706e9060440160006040518083038186803b1580156117b257600080fd5b505af41580156117c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117ee9190810190613c35565b915091509091565b60035460405163e5143edf60e01b8152600480820152602481018390526001600160a01b03909116604482015260009081907360da38fa211fcb7dd2008bab185a2f90b16db3009063e5143edf906064015b604080518083038186803b15801561185f57600080fd5b505af4158015611873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611897919061387e565b9094909350915050565b600080600260005414156118c75760405162461bcd60e51b81526004016107b0906135ca565b60026000556040830135428110156119175760405162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb88195e1c1a5c9959606a1b60448201526064016107b0565b6003547360da38fa211fcb7dd2008bab185a2f90b16db3009063ac732ee39060049087906001600160a01b031661115d6124b3565b6000806000600260005414156119745760405162461bcd60e51b81526004016107b0906135ca565b60026000556003547360da38fa211fcb7dd2008bab185a2f90b16db3009063472cdd9d9060049087906001600160a01b03166119ae6124b3565b6040516001600160e01b031960e087901b168152600481019490945260248401929092526001600160a01b03908116604484015216606482015260840160606040518083038186803b158015611a0357600080fd5b505af4158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b9190613a6b565b92509250925060016000559193909250565b60026000541415611a705760405162461bcd60e51b81526004016107b0906135ca565b60026000556003547360da38fa211fcb7dd2008bab185a2f90b16db30090632f6b06769060049084906001600160a01b0316611aaa6124b3565b6040516001600160e01b031960e087901b16815260048101949094526001600160801b0390921660248401526001600160a01b039081166044840152166064820152608401610a0a565b600380546001600160a01b0319166001600160a01b038c16179055611b20898989898989898989612720565b50505050505050505050565b600060026000541415611b515760405162461bcd60e51b81526004016107b0906135ca565b600260005560035460405163f195200560e01b8152600480820152602481018490526001600160a01b0390911660448201527360da38fa211fcb7dd2008bab185a2f90b16db3009063f195200590606401610806565b600060026000541415611bcc5760405162461bcd60e51b81526004016107b0906135ca565b60026000556003547360da38fa211fcb7dd2008bab185a2f90b16db300906371cc3f0090600490869086906001600160a01b0316611c086124b3565b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b03938416602486015260448501929092528216606484015216608482015260a401610910565b600081815260026020526040812061078590612759565b60405163331949cb60e21b81526004808201526060907360da38fa211fcb7dd2008bab185a2f90b16db3009063cc65272c90602401611211565b610bb48282612763565b6003546040516355b0e3ed60e11b8152600480820152602481018390526001600160a01b03909116604482015260009081907360da38fa211fcb7dd2008bab185a2f90b16db3009063ab61c7da90606401611848565b60026000541415611d255760405162461bcd60e51b81526004016107b0906135ca565b60026000556003546040516338ce7e7560e21b8152734c0d505ffac3e8461a6c6abc71f988c5a6ef44989163e339f9d491611d74916004918891889188916001600160a01b0316908501613c7b565b60006040518083038186803b158015611d8c57600080fd5b505af4158015611da0573d6000803e3d6000fd5b505060016000555050505050565b600061078560048361269b565b6040516302abf57960e61b815270466163746f727956657273696f6e696e6760781b60048201526000906001600160a01b0383169063aafd5e409060240160206040518083038186803b158015611e1157600080fd5b505afa158015611e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e499190613798565b604051636d2721a360e11b81526a506f6f6c466163746f727960a81b60048201529091506000906001600160a01b0383169063da4e43469060240160206040518083038186803b158015611e9c57600080fd5b505afa158015611eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed49190613cb7565b9050611eef82826a506f6f6c466163746f727960a81b61278c565b610b015760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016107b0565b600354604051634bad37d360e01b81526004808201526001600160a01b0390911660248201527360da38fa211fcb7dd2008bab185a2f90b16db30090634bad37d39060440160006040518083038186803b158015611f8657600080fd5b505af4158015611f9a573d6000803e3d6000fd5b50505050565b600080606081611faf81611c51565b90506000816001600160401b03811115611fcb57611fcb613651565b604051908082528060200260200182016040528015611ff4578160200160208202803683370190505b50905060005b8281101561204e57600061200e8183611706565b90508083838151811061202357612023613cd4565b6001600160a01b0390921660209283029190910190910152508061204681613cea565b915050611ffa565b50612066600080516020614046833981519152611c51565b91506000826001600160401b0381111561208257612082613651565b6040519080825280602002602001820160405280156120ab578160200160208202803683370190505b50905060005b838110156121135760006120d360008051602061404683398151915283611706565b9050808383815181106120e8576120e8613cd4565b6001600160a01b0390921660209283029190910190910152508061210b81613cea565b9150506120b1565b50604051633ee69ef360e21b81526004808201526000907360da38fa211fcb7dd2008bab185a2f90b16db3009063fb9a7bcc9060240160006040518083038186803b15801561216157600080fd5b505af4158015612175573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261219d919081019061399d565b60405163331949cb60e21b81526004808201529091506000907360da38fa211fcb7dd2008bab185a2f90b16db3009063cc65272c9060240160006040518083038186803b1580156121ed57600080fd5b505af4158015612201573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612229919081019061399d565b604080516080810182528681526020810186905280820185905260608101839052600354915163425469b960e01b8152929350734c0d505ffac3e8461a6c6abc71f988c5a6ef44989263425469b9926122929260049290916001600160a01b0316908301613d49565b60006040518083038186803b1580156122aa57600080fd5b505af41580156122be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122e69190810190613dde565b919a90995090975095505050505050565b604051633ee69ef360e21b81526004808201526000907360da38fa211fcb7dd2008bab185a2f90b16db3009063fb9a7bcc9060240160006040518083038186803b15801561234457600080fd5b505af4158015612358573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612380919081019061399d565b60405163331949cb60e21b81526004808201529091506000907360da38fa211fcb7dd2008bab185a2f90b16db3009063cc65272c9060240160006040518083038186803b1580156123d057600080fd5b505af41580156123e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261240c919081019061399d565b604051631a08979960e11b8152909150734c0d505ffac3e8461a6c6abc71f988c5a6ef4498906334112f329061244a90600490869086908301613e4b565b60006040518083038186803b15801561246257600080fd5b505af4158015612476573d6000803e3d6000fd5b505050505050565b60006001600160e01b03198216637965db0b60e01b148061078557506301ffc9a760e01b6001600160e01b0319831614610785565b6000610ada61287a565b600082815260016020819052604090912001546124e1816124dc6124b3565b61289c565b610b018383612900565b600061171e836001600160a01b038416612988565b6125086124b3565b6001600160a01b0316816001600160a01b0316146125805760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107b0565b61258a82826129d7565b5050565b600061171e836001600160a01b038416612a5c565b6040516302abf57960e61b81526d2632b73234b733a6b0b730b3b2b960911b60048201526000906001600160a01b0383169063aafd5e40906024015b60206040518083038186803b1580156125f757600080fd5b505afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190613798565b6040516302abf57960e61b8152742632b73234b733a9ba37b930b3b2a6b0b730b3b2b960591b60048201526000906001600160a01b0383169063aafd5e40906024016125df565b606061171e838360405180606001604052806027815260200161401f60279139612b4f565b6001600160a01b0381166000908152600183016020526040812054151561171e565b6000828152600160208190526040808320909101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610ae98282612c23565b600061171e8383612c2d565b600354612735906001600160a01b0316611dbb565b612743898989898989612c57565b61274e838383612e16565b505050505050505050565b6000610785825490565b60008281526001602081905260409091200154612782816124dc6124b3565b610b0183836129d7565b60008060005b8460ff168260ff16101561287157604051636839980160e11b81526004810185905260ff821660248201526001600160a01b0387169063d07330029060440160206040518083038186803b1580156127e957600080fd5b505afa925050508015612819575060408051601f3d908101601f1916820190925261281691810190613798565b60015b6128225761285f565b336001600160a01b038216141561283d576001935050612871565b8261284781613e76565b9350508560ff168360ff16141561285d57600093505b505b8061286981613e76565b915050612792565b50509392505050565b600061288533611265565b15612897575060131936013560601c90565b503390565b6128a68282611725565b61258a576128be816001600160a01b03166014612e89565b6128c9836020612e89565b6040516020016128da929190613e96565b60408051601f198184030181529082905262461bcd60e51b82526107b0916004016131cb565b61290a8282611725565b61258a5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790556129446124b3565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546129cf57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610785565b506000610785565b6129e18282611725565b1561258a5760008281526001602090815260408083206001600160a01b03851684529091529020805460ff19169055612a186124b3565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60008181526001830160205260408120548015612b45576000612a80600183613f0b565b8554909150600090612a9490600190613f0b565b9050818114612af9576000866000018281548110612ab457612ab4613cd4565b9060005260206000200154905080876000018481548110612ad757612ad7613cd4565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612b0a57612b0a613f22565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610785565b6000915050610785565b6060833b612bae5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107b0565b600080856001600160a01b031685604051612bc99190613862565b600060405180830381855af49150503d8060008114612c04576040519150601f19603f3d011682016040523d82523d6000602084013e612c09565b606091505b5091509150612c19828286613024565b9695505050505050565b61258a8282612900565b6000826000018281548110612c4457612c44613cd4565b9060005260206000200154905092915050565b600c54600160e81b900460ff1615612cac5760405162461bcd60e51b8152602060048201526018602482015277141bdbdb08185b1c9958591e481a5b9a5d1a585b1a5e995960421b60448201526064016107b0565b6040516363a108eb60e01b81526000908190734c0d505ffac3e8461a6c6abc71f988c5a6ef4498906363a108eb90612cf4906004908c908c908c908c908c908c908701613f38565b60006040518083038186803b158015612d0c57600080fd5b505af4158015612d20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d489190810190613f85565b9092509050612d586000806126bd565b612d7160008051602061404683398151915260006126bd565b60005b8251811015612db557612da36000801b848381518110612d9657612d96613cd4565b602002602001015161270a565b80612dad81613cea565b915050612d74565b5060005b8151811015612df857612de6600080516020614046833981519152838381518110612d9657612d96613cd4565b80612df081613cea565b915050612db9565b5050600c805460ff60e81b1916600160e81b17905550505050505050565b604051631459a6e160e11b8152600480820152602481018490526044810183905260648101829052734c0d505ffac3e8461a6c6abc71f988c5a6ef4498906328b34dc29060840160006040518083038186803b158015612e7557600080fd5b505af4158015610fae573d6000803e3d6000fd5b60606000612e98836002613fe8565b612ea3906002613780565b6001600160401b03811115612eba57612eba613651565b6040519080825280601f01601f191660200182016040528015612ee4576020820181803683370190505b509050600360fc1b81600081518110612eff57612eff613cd4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612f2e57612f2e613cd4565b60200101906001600160f81b031916908160001a9053506000612f52846002613fe8565b612f5d906001613780565b90505b6001811115612fd5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612f9157612f91613cd4565b1a60f81b828281518110612fa757612fa7613cd4565b60200101906001600160f81b031916908160001a90535060049490941c93612fce81614007565b9050612f60565b50831561171e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107b0565b6060831561303357508161171e565b8251156130435782518084602001fd5b8160405162461bcd60e51b81526004016107b091906131cb565b60005b83811015613078578181015183820152602001613060565b83811115611f9a5750506000910152565b600081518084526130a181602086016020860161305d565b601f01601f19169290920160200192915050565b60ff841681528260208201526060604082015260006130d76060830184613089565b95945050505050565b6000602082840312156130f257600080fd5b81356001600160e01b03198116811461171e57600080fd5b6001600160a01b038116811461311f57600080fd5b50565b60006020828403121561313457600080fd5b813561171e8161310a565b80356001600160801b038116811461132457600080fd5b6000806040838503121561316957600080fd5b823591506131796020840161313f565b90509250929050565b60006020828403121561319457600080fd5b5035919050565b600080604083850312156131ae57600080fd5b8235915060208301356131c08161310a565b809150509250929050565b60208152600061171e6020830184613089565b80356001600160401b038116811461132457600080fd5b60006020828403121561320757600080fd5b61171e826131de565b60006040828403121561322257600080fd5b50919050565b60008060006080848603121561323d57600080fd5b83356001600160401b0381111561325357600080fd5b61325f86828701613210565b93505061326f8560208601613210565b9150606084013561327f8161310a565b809150509250925092565b60006080828403121561322257600080fd5b6000608082840312156132ae57600080fd5b61171e838361328a565b6020808252825182820181905260009190848201906040850190845b818110156132f95783516001600160a01b0316835292840192918401916001016132d4565b50909695505050505050565b600061014082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516133788285018215159052565b505092915050565b60006020828403121561339257600080fd5b81356001600160401b038111156133a857600080fd5b8201610160818503121561171e57600080fd5b600080604083850312156133ce57600080fd5b50508035926020909101359150565b6040815260006133f06040830185613089565b905060018060a01b03831660208301529392505050565b60006020828403121561341957600080fd5b61171e8261313f565b80356113248161310a565b60ff8116811461311f57600080fd5b80356113248161342d565b60008083601f84011261345957600080fd5b5081356001600160401b0381111561347057600080fd5b60208301915083602082850101111561348857600080fd5b9250929050565b6000806000806000806000806000806101008b8d0312156134af57600080fd5b8a356134ba8161310a565b995060208b01356134ca8161342d565b985060408b01356001600160401b03808211156134e657600080fd5b6134f28e838f01613447565b909a50985060608d013591506135078261342d565b90965060808c0135908082111561351d57600080fd5b5061352a8d828e01613447565b9b9e9a9d50989b979a9699969760a08101359760c0820135975060e09091013595509350505050565b6000806040838503121561356657600080fd5b82356135718161310a565b946020939093013593505050565b60008060006040848603121561359457600080fd5b83356001600160401b038111156135aa57600080fd5b6135b686828701613447565b909450925050602084013561327f8161310a565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561361357600080fd5b5051919050565b6020808252601d908201527f53656e646572206d75737420626520746865206d61696e7461696e6572000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171561368a5761368a613651565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136b8576136b8613651565b604052919050565b60006001600160401b038311156136d9576136d9613651565b6136ec601f8401601f1916602001613690565b905082815283838301111561370057600080fd5b61171e83602083018461305d565b600082601f83011261371f57600080fd5b61171e838351602085016136c0565b60006020828403121561374057600080fd5b81516001600160401b0381111561375657600080fd5b6137628482850161370e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156137935761379361376a565b500190565b6000602082840312156137aa57600080fd5b815161171e8161310a565b6000808335601e198436030181126137cc57600080fd5b8301803591506001600160401b038211156137e657600080fd5b60200191503681900382131561348857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006138386080830187896137fb565b6001600160a01b039586166020840152938516604083015250921660609092019190915292915050565b6000825161387481846020870161305d565b9190910192915050565b6000806040838503121561389157600080fd5b505080516020909101519092909150565b80358252602081013560208301526040810135604083015260608101356138c88161310a565b6001600160a01b03166060929092019190915250565b84815260e081016138f260208301866138a2565b6001600160a01b0393841660a08301529190921660c09092019190915292915050565b600082601f83011261392657600080fd5b815160206001600160401b0382111561394157613941613651565b8160051b613950828201613690565b928352848101820192828101908785111561396a57600080fd5b83870192505b848310156139925782516139838161310a565b82529183019190830190613970565b979650505050505050565b6000602082840312156139af57600080fd5b81516001600160401b038111156139c557600080fd5b61376284828501613915565b8051801515811461132457600080fd5b600061014082840312156139f457600080fd5b6139fc613667565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120613a608185016139d1565b908201529392505050565b600080600060608486031215613a8057600080fd5b8351925060208401519150604084015190509250925092565b8035613aa48161310a565b6001600160a01b039081168352602082013590613ac08261310a565b808216602085015250505050565b6000808335601e19843603018112613ae557600080fd5b83016020810192503590506001600160401b03811115613b0457600080fd5b80360383131561348857600080fd5b82815260406020820152613b3a60408201613b2d84613422565b6001600160a01b03169052565b6000613b486020840161343c565b60ff166060830152613b5c60408401613422565b6001600160a01b03166080830152613b7660608401613422565b6001600160a01b031660a0830152613b9460c0830160808501613a99565b613ba060c084016131de565b610100613bb7818501836001600160401b03169052565b610120915060e085013582850152613bd081860161313f565b9050610140613be9818601836001600160801b03169052565b613bf48387016131de565b92506101609150613c0f828601846001600160401b03169052565b613c1b81870187613ace565b93509050816101808601526139926101a0860184836137fb565b60008060408385031215613c4857600080fd5b82516001600160401b03811115613c5e57600080fd5b613c6a8582860161370e565b92505060208301516131c08161310a565b858152608060208201526000613c956080830186886137fb565b6001600160a01b03948516604084015292909316606090910152949350505050565b600060208284031215613cc957600080fd5b815161171e8161342d565b634e487b7160e01b600052603260045260246000fd5b6000600019821415613cfe57613cfe61376a565b5060010190565b600081518084526020808501945080840160005b83811015613d3e5781516001600160a01b031687529582019590820190600101613d19565b509495945050505050565b838152606060208201526000835160806060840152613d6b60e0840182613d05565b90506020850151605f1980858403016080860152613d898383613d05565b925060408701519150808584030160a0860152613da68383613d05565b925060608701519150808584030160c086015250613dc48282613d05565b9250505060018060a01b0383166040830152949350505050565b600080600060608486031215613df357600080fd5b8351613dfe8161342d565b6020850151604086015191945092506001600160401b03811115613e2157600080fd5b8401601f81018613613e3257600080fd5b613e41868251602084016136c0565b9150509250925092565b838152606060208201526000613e646060830185613d05565b8281036040840152612c198185613d05565b600060ff821660ff811415613e8d57613e8d61376a565b60010192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613ece81601785016020880161305d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613eff81602884016020880161305d565b01602801949350505050565b600082821015613f1d57613f1d61376a565b500390565b634e487b7160e01b600052603160045260246000fd5b87815260ff8716602082015260a060408201526000613f5b60a0830187896137fb565b60ff861660608401528281036080840152613f778185876137fb565b9a9950505050505050505050565b60008060408385031215613f9857600080fd5b82516001600160401b0380821115613faf57600080fd5b613fbb86838701613915565b93506020850151915080821115613fd157600080fd5b50613fde85828601613915565b9150509250929050565b60008160001904831182151516156140025761400261376a565b500290565b6000816140165761401661376a565b50600019019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564126303c860ea810f85e857ad8768056e2eebc24b7796655ff3107e4af18e3f1e636c61696d526577617264732862797465732c616464726573732c616464726573732c6164647265737329a2646970667358221220ae4053f9061c29844ebf1e1052e7c9b2a29355006c10686e6e5798392e0a6b0964736f6c63430008090033