23 txs
24 calls
constructor
constructor()
functions
BASE
viewfunction BASE() view returns (address)
creatorTokens
viewfunction creatorTokens(address, uint256) view returns (address)
debugTokenMarketCap
viewfunction debugTokenMarketCap(address tokenAddress) view returns (address pool, uint256 totalSupply, uint160 sqrtPriceX96, bool tokenIsToken0, uint256 scaledSupply, uint256 scaledPrice, uint256 denominator, uint256 marketCap)
deployCoinEnabled
viewfunction deployCoinEnabled() view returns (bool)
deployedTokens
viewfunction deployedTokens(uint256) view returns (address tokenAddress, string name, string symbol, address deployer, uint256 time, string metadata, uint256 marketCapBase, address receiver, uint256 split, uint256 nftId, uint256 tokenBalance, uint256 totalFeesGenerated)
getAllTokensByCreator
viewfunction getAllTokensByCreator(address _creator) view returns (address[])
getAllTokensByReceiver
viewfunction getAllTokensByReceiver(address _receiver) view returns (address[])
getDeploysByPage
viewfunction getDeploysByPage(uint256 page, uint256 order) view returns (tuple[])
getLiquidityConfig
viewfunction getLiquidityConfig(uint256 _configId) view returns (tuple)
getPenalty
purefunction getPenalty(uint256 baseAmount) pure returns (uint256)
getTokenBytecode
viewfunction getTokenBytecode(string _name, string _symbol, address creator) view returns (bytes bytecode)
getTokenFeesGenerated
viewfunction getTokenFeesGenerated(address tokenAddress) view returns (uint256)
getTokenMarketCap
viewfunction getTokenMarketCap(address tokenAddress) view returns (uint256 marketCap)
liquidityConfigCount
viewfunction liquidityConfigCount() view returns (uint256)
liquidityConfigs
viewfunction liquidityConfigs(uint256) view returns (uint160 sqrtPriceX96A, uint160 sqrtPriceX96B, int24 tickLower, int24 tickUpper, uint256 amount0Desired, uint256 amount1Desired, uint256 virtualAmount)
platformController
viewfunction platformController() view returns (address)
POSITION_MANAGER
viewfunction POSITION_MANAGER() view returns (address)
receiverTokens
viewfunction receiverTokens(address, uint256) view returns (address)
SWAP_ROUTER
viewfunction SWAP_ROUTER() view returns (address)
tokenCount
viewfunction tokenCount() view returns (uint256)
tokenFeesGenerated
viewfunction tokenFeesGenerated(address) view returns (uint256)
tokenInfoByAddress
viewfunction tokenInfoByAddress(address) view returns (address tokenAddress, string name, string symbol, address deployer, uint256 time, string metadata, uint256 marketCapBase, address receiver, uint256 split, uint256 nftId, uint256 tokenBalance, uint256 totalFeesGenerated)
tokenToNFTId
viewfunction tokenToNFTId(address) view returns (uint256)
changeTokenFeeReceiver
nonpayablefunction changeTokenFeeReceiver(address tokenAddress, address newCreator)
collectFees
nonpayablefunction collectFees(uint256 tokenId) returns (uint256 amount0, uint256 amount1)
createLiquidityConfig
nonpayablefunction createLiquidityConfig(uint160 _sqrtPriceX96A, uint160 _sqrtPriceX96B, int24 _tickLower, int24 _tickUpper, uint256 _amount0Desired, uint256 _amount1Desired, uint256 _virtualAmount) returns (uint256 configId)
deleteLiquidityConfig
nonpayablefunction deleteLiquidityConfig(uint256 _configId)
deployCoin
nonpayablefunction deployCoin(string _name, string _symbol, string _metadata, bytes32 salt, address receiver, uint256 split, uint256 baseAmount, uint256 configId) returns (uint256 tokensReceived)
setItemsPerPage
nonpayablefunction setItemsPerPage(uint256 _itemsPerPage)
setPenaltyMultiplier
nonpayablefunction setPenaltyMultiplier(uint256 _multiplier)
toggleDeployCoin
nonpayablefunction toggleDeployCoin()
updateLiquidityConfig
nonpayablefunction updateLiquidityConfig(uint256 _configId, uint160 _sqrtPriceX96A, uint160 _sqrtPriceX96B, int24 _tickLower, int24 _tickUpper, uint256 _amount0Desired, uint256 _amount1Desired, uint256 _virtualAmount)
withdrawFeesBASE
nonpayablefunction withdrawFeesBASE()
events
ERC20TokenCreated
event ERC20TokenCreated(address tokenAddress)
TokenPurchased
event TokenPurchased(address buyer, address tokenOut, uint256 ethSpent, uint256 tokensReceived)
errors
No errors.
creation bytecode
0x60806040525f60028190556003805460ff60a01b1916905560646004556101f4600555600b55348015610030575f5ffd5b5060038054336001600160a01b0319918216179091556040805160e0810182526a928aace9f21c86a0edbcb681526d01bf31eede42333c4b65a4168e8c60208083019182526201dc90938301938452620d89a0606084019081526b033b2e3c9fd0803ce8000000608085019081525f60a0860181815269010f0cf064dd5920000060c08801908152828052600a90955295517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e380549099166001600160a01b039182161790985593517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4805497519351919098166001600160b81b031990971696909617600160a01b62ffffff938416021762ffffff60b81b1916600160b81b92909616919091029490941790945591517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e555517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e65590517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e7556001600b55615c989081906101de90395ff3fe6080604052600436106101e9575f3560e01c80639f181b5e11610108578063bf107b521161009d578063ec342ad01161006d578063ec342ad014610751578063ec81aadb14610771578063f7b64c8314610790578063f861063c146107a4578063fe6b9454146107c3575f5ffd5b8063bf107b521461062f578063c60058931461065a578063c69d61b614610681578063db3fa4cc14610732575f5ffd5b8063aced8d81116100d8578063aced8d8114610531578063b17acdcd1461055d578063b9ea0aea14610591578063bf0c93551461061b575f5ffd5b80639f181b5e14610473578063a57bf14c14610488578063a5858866146104a7578063a6a9cb1314610512575f5ffd5b80635bdb9d6a1161017e578063964a04951161014e578063964a0495146103f757806396e59682146104165780639bea0919146104355780639d25a66914610454575f5ffd5b80635bdb9d6a14610348578063675870461461037c5780637ff4cffb146103ac5780638d99aeb0146103cb575f5ffd5b806339dbc3df116101b957806339dbc3df146102a75780633bcc75f6146102c6578063521078b5146102e55780635442a67f14610311575f5ffd5b80631bea83fe146101f457806321bafd29146102385780632486b046146102595780632ef780d41461027c575f5ffd5b366101f057005b5f5ffd5b3480156101ff575f5ffd5b5061021b73c36442b4a4522e871399cd717abdd847ab11fe8881565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610243575f5ffd5b5061025761025236600461378f565b6107e2565b005b348015610264575f5ffd5b5061026e600b5481565b60405190815260200161022f565b348015610287575f5ffd5b5061026e61029636600461381b565b60086020525f908152604090205481565b3480156102b2575f5ffd5b5061026e6102c136600461381b565b61094e565b3480156102d1575f5ffd5b5060035461021b906001600160a01b031681565b3480156102f0575f5ffd5b506103046102ff36600461381b565b610c08565b60405161022f919061383d565b34801561031c575f5ffd5b5061033061032b36600461381b565b610c7b565b60405161022f9c9b9a999897969594939291906138b6565b348015610353575f5ffd5b5061026e61036236600461381b565b6001600160a01b03165f9081526008602052604090205490565b348015610387575f5ffd5b5060035461039c90600160a01b900460ff1681565b604051901515815260200161022f565b3480156103b7575f5ffd5b506102576103c6366004613961565b610e8b565b3480156103d6575f5ffd5b506103ea6103e5366004613a17565b610f74565b60405161022f9190613a8f565b348015610402575f5ffd5b50610257610411366004613aa1565b610fe5565b348015610421575f5ffd5b5061026e610430366004613961565b61110e565b348015610440575f5ffd5b5061030461044f36600461381b565b611190565b34801561045f575f5ffd5b5061026e61046e366004613ad8565b611201565b34801561047e575f5ffd5b5061026e60025481565b348015610493575f5ffd5b5061026e6104a2366004613b4a565b61136b565b3480156104b2575f5ffd5b506104c66104c136600461381b565b611c74565b604080516001600160a01b03998a168152602081019890985295909716948601949094529115156060850152608084015260a083015260c082015260e08101919091526101000161022f565b34801561051d575f5ffd5b5061025761052c366004613961565b611f4a565b34801561053c575f5ffd5b5061055061054b366004613bea565b612072565b60405161022f9190613c0a565b348015610568575f5ffd5b5061057c610577366004613961565b6126b1565b6040805192835260208301919091520161022f565b34801561059c575f5ffd5b506105b06105ab366004613961565b613007565b60405161022f91905f60e08201905060018060a01b03835116825260018060a01b036020840151166020830152604083015160020b6040830152606083015160020b60608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b348015610626575f5ffd5b506102576130db565b34801561063a575f5ffd5b5061026e61064936600461381b565b60096020525f908152604090205481565b348015610665575f5ffd5b5061021b7368b3465833fb72a70ecdf485e0e4c7bd8665fc4581565b34801561068c575f5ffd5b506106e961069b366004613961565b600a6020525f908152604090208054600182015460028084015460038501546004909501546001600160a01b039485169594841694600160a01b8504840b94600160b81b900490930b929087565b604080516001600160a01b039889168152979096166020880152600294850b958701959095529190920b6060850152608084019190915260a083015260c082015260e00161022f565b34801561073d575f5ffd5b5061021b61074c366004613d37565b61322e565b34801561075c575f5ffd5b5061021b5f516020615c435f395f51905f5281565b34801561077c575f5ffd5b5061033061078b366004613961565b613262565b34801561079b575f5ffd5b5061025761328d565b3480156107af575f5ffd5b5061021b6107be366004613d37565b6132d8565b3480156107ce575f5ffd5b506102576107dd366004613961565b6132f1565b6003546001600160a01b0316331461085e5760405162461bcd60e51b815260206004820152603460248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e20757064604482015273617465206c697175696469747920636f6e66696760601b60648201526084015b60405180910390fd5b600b54881061087f5760405162461bcd60e51b815260040161085590613d61565b6040805160e0810182526001600160a01b0398891681529688166020808901918252600297880b89840190815296880b60608a0190815260808a0196875260a08a0195865260c08a019485525f9b8c52600a90915291909920965187546001600160a01b031916908916178755975160018701805495519951919098166001600160b81b031990951694909417600160a01b62ffffff998a16021762ffffff60b81b1916600160b81b989094169790970292909217909455925190820155905160038201559051600490910155565b5f5f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c49190613d97565b604051630b4c774160e11b81526001600160a01b0385811660048301525f516020615c435f395f51905f52602483015261271060448301529192505f91831690631698ee8290606401602060405180830381865afa158015610a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4c9190613d97565b90506001600160a01b038116610a6557505f9392505050565b5f846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac69190613db2565b90505f826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610b05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b299190613df4565b5050505050509050806001600160a01b03165f1480610b46575081155b15610b5657505f95945050505050565b5f516020615c435f395f51905f526001600160a01b038716108015610bb8575f610b8564e8d4a5100085613e95565b90505f6060610b9d6001600160a01b03861680613eb4565b901c90506060610bad8284613eb4565b901c97505050610bfe565b5f610bc864e8d4a5100085613e95565b90505f6060610be06001600160a01b03861680613eb4565b901c90508015610bfb57610bf881606084901b613e95565b97505b50505b5050505050919050565b6001600160a01b0381165f90815260076020908152604091829020805483518184028101840190945280845260609392830182828015610c6f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610c51575b50505050509050919050565b600160208190525f9182526040909120805491810180546001600160a01b0390931692610ca790613ecb565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd390613ecb565b8015610d1e5780601f10610cf557610100808354040283529160200191610d1e565b820191905f5260205f20905b815481529060010190602001808311610d0157829003601f168201915b505050505090806002018054610d3390613ecb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5f90613ecb565b8015610daa5780601f10610d8157610100808354040283529160200191610daa565b820191905f5260205f20905b815481529060010190602001808311610d8d57829003601f168201915b505050506003830154600484015460058501805494956001600160a01b039093169491935090610dd990613ecb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0590613ecb565b8015610e505780601f10610e2757610100808354040283529160200191610e50565b820191905f5260205f20905b815481529060010190602001808311610e3357829003601f168201915b5050506006840154600785015460088601546009870154600a880154600b90980154969793966001600160a01b03909316955090935091908c565b6003546001600160a01b03163314610f005760405162461bcd60e51b815260206004820152603260248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e206368616044820152716e6765206974656d7320706572207061676560701b6064820152608401610855565b5f81118015610f1157506103e88111155b610f6f5760405162461bcd60e51b815260206004820152602960248201527f4974656d73207065722070616765206d757374206265206265747765656e2031604482015268020616e6420313030360bc1b6064820152608401610855565b600555565b606060405180602001610f869061375d565b601f1982820381018352601f909101166040819052610faf908690869086903090602001613f03565b60408051601f1981840301815290829052610fcd9291602001613f63565b60405160208183030381529060405290509392505050565b6003546001600160a01b031633146110535760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e2063686160448201526a3733b29031b932b0ba37b960a91b6064820152608401610855565b6001600160a01b0381166110b45760405162461bcd60e51b815260206004820152602260248201527f4e65772063726561746f722063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610855565b6040516374580e2f60e01b81526001600160a01b0382811660048301528316906374580e2f906024015f604051808303815f87803b1580156110f4575f5ffd5b505af1158015611106573d5f5f3e3d5ffd5b505050505050565b5f680ad78ebc5ac620000068410d586a20a4c0000068d8d726b7177a8000008285101561113f57505f949350505050565b8185106111525750611388949350505050565b6146505f6111608588613f7f565b90505f8361116e8484613eb4565b6111789190613e95565b611184906101f4613f92565b98975050505050505050565b6001600160a01b0381165f90815260066020908152604091829020805483518184028101840190945280845260609392830182828015610c6f57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610c515750505050509050919050565b6003545f906001600160a01b0316331461127a5760405162461bcd60e51b815260206004820152603460248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e20637265604482015273617465206c697175696469747920636f6e66696760601b6064820152608401610855565b50600b80546040805160e0810182526001600160a01b038b811682528a8116602080840191825260028c810b8587019081528c820b60608701908152608087018d815260a088018d815260c089018d81525f8c8152600a909752998620985189546001600160a01b031916908916178955955160018901805494519351919098166001600160b81b031990941693909317600160a01b62ffffff938416021762ffffff60b81b1916600160b81b9290931691909102919091179094559251928401929092555160038301559151600490910155825491929061135b83613fa5565b9190505550979650505050505050565b6003545f90600160a01b900460ff166113d55760405162461bcd60e51b815260206004820152602660248201527f546f6b656e206465706c6f796d656e742069732063757272656e746c792064696044820152651cd8589b195960d21b6064820152608401610855565b600b5482106114265760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c697175696469747920636f6e66696720494400000000006044820152606401610855565b5f868a8a33306040516114389061375d565b6114459493929190613f03565b8190604051809103905ff5905080158015611462573d5f5f3e3d5ffd5b506040516001600160a01b03821681529091507f60122e78030aba0a2e4a67adb3e52b411343cc51778f919095d3fe394090c1b29060200160405180910390a1806114bb815f516020615c435f395f51905f5286613371565b5f9250841561196b576040516370a0823160e01b815233600482015285905f516020615c435f395f51905f52906370a0823190602401602060405180830381865afa15801561150c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115309190613db2565b101561157e5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420424153452062616c616e6365000000000000006044820152606401610855565b604051636eb1769f60e11b815233600482015230602482015285905f516020615c435f395f51905f529063dd62ed3e90604401602060405180830381865afa1580156115cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f09190613db2565b101561163e5760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74204241534520616c6c6f77616e636500000000006044820152606401610855565b5f6116488661110e565b90505f60646004548361165b9190613eb4565b6116659190613e95565b90505f612710611675838a613eb4565b61167f9190613e95565b90505f61168c828a613f7f565b6040516323b872dd60e01b8152336004820152306024820152604481018b90529091505f516020615c435f395f51905f52906323b872dd906064016020604051808303815f875af11580156116e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117079190613fbd565b5060405163095ea7b360e01b81527368b3465833fb72a70ecdf485e0e4c7bd8665fc456004820152602481018290525f516020615c435f395f51905f529063095ea7b3906044016020604051808303815f875af115801561176a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178e9190613fbd565b506040805160e0810182525f516020615c435f395f51905f5281526001600160a01b03878116602083019081526127108385019081523060608501908152608085018781525f60a0870181815260c0880191825297516304e45aaf60e01b8152965186166004880152935185166024870152915162ffffff1660448601525183166064850152516084840152925160a4830152915190911660c48201527368b3465833fb72a70ecdf485e0e4c7bd8665fc45906304e45aaf9060e4016020604051808303815f875af1158015611866573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188a9190613db2565b506040516370a0823160e01b815230600482015285906001600160a01b038216906370a0823190602401602060405180830381865afa1580156118cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f39190613db2565b60405163a9059cbb60e01b8152336004820152602481018290529098506001600160a01b0382169063a9059cbb906044016020604051808303815f875af1158015611940573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119649190613fbd565b5050505050505b5f604051806101800160405280836001600160a01b031681526020018d81526020018c8152602001336001600160a01b031681526020014281526020018b81526020015f8152602001896001600160a01b0316815260200188815260200160095f856001600160a01b03166001600160a01b031681526020019081526020015f205481526020015f81526020015f8152509050805f5f60025481526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001019081611a509190614022565b5060408201516002820190611a659082614022565b5060608201516003820180546001600160a01b0319166001600160a01b039092169190911790556080820151600482015560a08201516005820190611aaa9082614022565b5060c0820151600682015560e08201516007820180546001600160a01b039283166001600160a01b03199182161790915561010084015160088401556101208401516009840155610140840151600a84015561016090930151600b909201919091558381165f90815260016020818152604090922085518154941693909416929092178355830151839291820190611b429082614022565b5060408201516002820190611b579082614022565b5060608201516003820180546001600160a01b0319166001600160a01b039092169190911790556080820151600482015560a08201516005820190611b9c9082614022565b5060c082015160068083019190915560e0830151600780840180546001600160a01b039384166001600160a01b03199182161790915561010086015160088601556101208601516009860155610140860151600a86015561016090950151600b909401939093558b81165f90815260209283526040808220805460018181018355918452858420018054948a1694881685179055338352948452812080549485018155815291822090920180549093169091179091556002805491611c6083613fa5565b919050555050505098975050505050505050565b5f5f5f5f5f5f5f5f5f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ccd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf19190613d97565b604051630b4c774160e11b81526001600160a01b038c811660048301525f516020615c435f395f51905f526024830152612710604483015291925090821690631698ee8290606401602060405180830381865afa158015611d54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d789190613d97565b98506001600160a01b038916611da357505f9650869550859450849350839250829150819050611f3f565b896001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ddf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e039190613db2565b9750886001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611e41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e659190613df4565b50949b5050506001600160a01b038a16159250829150611e859050575087155b15611e9f57505f9450849350839250829150819050611f3f565b5f516020615c435f395f51905f526001600160a01b038b16109550611ec964e8d4a5100089613e95565b94508515611f02576060611ee66001600160a01b03891680613eb4565b901c93505f92506060611ef98587613eb4565b901c9150611f3d565b5f93506060611f1a6001600160a01b03891680613eb4565b901c92508215611f3957611f3283606087901b613e95565b9150611f3d565b5f91505b505b919395975091939597565b6003546001600160a01b03163314611fc15760405162461bcd60e51b815260206004820152603460248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e2064656c604482015273657465206c697175696469747920636f6e66696760601b6064820152608401610855565b600b548110611fe25760405162461bcd60e51b815260040161085590613d61565b805f036120315760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742064656c6574652064656661756c7420636f6e666967000000006044820152606401610855565b5f908152600a6020526040812080546001600160a01b03191681556001810180546001600160d01b0319169055600281018290556003810182905560040155565b60605f600254116120ba5760405162461bcd60e51b8152602060048201526012602482015271139bc81d1bdad95b9cc819195c1b1bde595960721b6044820152606401610855565b5f60055460016005546002546120d09190613f92565b6120da9190613f7f565b6120e49190613e95565b90508084106121295760405162461bcd60e51b815260206004820152601160248201527050616765206f7574206f662072616e676560781b6044820152606401610855565b5f80808581036121b257600554612141886001613f92565b61214b9190613eb4565b60025411612159575f61217e565b600554612167886001613f92565b6121719190613eb4565b60025461217e9190613f7f565b92506005548761218e9190613eb4565b60025461219b9190613f7f565b91506002548211156121ad5760025491505b6121e1565b6005546121bf9088613eb4565b9250600554836121cf9190613f92565b91506002548211156121e15760025491505b5f6121ec8484613f7f565b67ffffffffffffffff81111561220457612204613978565b6040519080825280602002602001820160405280156122ab57816020015b6122986040518061018001604052805f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f8152602001606081526020015f81526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81525090565b8152602001906001900390816122225790505b509050835b838110156126a3575f88156122c557816122e4565b6122cf8683613f7f565b6122da600187613f7f565b6122e49190613f7f565b5f818152602081815260408083208151610180810190925280546001600160a01b0316825260018101805495965093949193909284019161232490613ecb565b80601f016020809104026020016040519081016040528092919081815260200182805461235090613ecb565b801561239b5780601f106123725761010080835404028352916020019161239b565b820191905f5260205f20905b81548152906001019060200180831161237e57829003601f168201915b505050505081526020016002820180546123b490613ecb565b80601f01602080910402602001604051908101604052809291908181526020018280546123e090613ecb565b801561242b5780601f106124025761010080835404028352916020019161242b565b820191905f5260205f20905b81548152906001019060200180831161240e57829003601f168201915b505050918352505060038201546001600160a01b031660208201526004820154604082015260058201805460609092019161246590613ecb565b80601f016020809104026020016040519081016040528092919081815260200182805461249190613ecb565b80156124dc5780601f106124b3576101008083540402835291602001916124dc565b820191905f5260205f20905b8154815290600101906020018083116124bf57829003601f168201915b50505091835250506006820154602082015260078201546001600160a01b031660408201526008820154606082015260098201546080820152600a82015460a0820152600b9091015460c09091015280519091505f9061253b9061094e565b825160e08401516040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa15801561258b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125af9190613db2565b9050604051806101800160405280845f01516001600160a01b03168152602001846020015181526020018460400151815260200184606001516001600160a01b03168152602001846080015181526020018460a0015181526020018381526020018460e001516001600160a01b031681526020018461010001518152602001846101200151815260200182815260200160085f865f01516001600160a01b03166001600160a01b031681526020019081526020015f205481525086888061267590613fa5565b995081518110612687576126876140dd565b60200260200101819052505050505080806001019150506122b0565b509450505050505b92915050565b60405163133f757160e31b8152600481018290525f9081908190819073c36442b4a4522e871399cd717abdd847ab11fe88906399fbab889060240161018060405180830381865afa158015612708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272c9190614119565b50979b509599508a985089975050506001600160a01b0387165f516020615c435f395f51905f52149450508315925061277e91505057506001600160a01b0383165f516020615c435f395f51905f5214155b156127895750819050825b5f826001600160a01b03166302d05d3f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ea9190613d97565b9050336001600160a01b038216148061280d57506003546001600160a01b031633145b61284a5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610855565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa15801561288e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b29190613db2565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038516906370a0823190602401602060405180830381865afa1580156128f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061291d9190613db2565b604080516080810182528c81523060208201526001600160801b0391810182905260608101919091529091506001600160a01b0385165f516020615c435f395f51905f52146129a45760405162461bcd60e51b8152602060048201526013602482015272746f6b656e31206d757374206265204241534560681b6044820152606401610855565b6040805163fc6f786560e01b81528251600482015260208301516001600160a01b03166024820152908201516001600160801b039081166044830152606083015116606482015273c36442b4a4522e871399cd717abdd847ab11fe889063fc6f78659060840160408051808303815f875af1158015612a25573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a4991906141f3565b50506040516370a0823160e01b81523060048201525f9084906001600160a01b038916906370a0823190602401602060405180830381865afa158015612a91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ab59190613db2565b612abf9190613f7f565b6040516370a0823160e01b81523060048201529091505f9084906001600160a01b038916906370a0823190602401602060405180830381865afa158015612b08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2c9190613db2565b612b369190613f7f565b6001600160a01b03808a165f90815260016020818152604080842081516101808101909252805490951681529184018054959650929491939290840191612b7c90613ecb565b80601f0160208091040260200160405190810160405280929190818152602001828054612ba890613ecb565b8015612bf35780601f10612bca57610100808354040283529160200191612bf3565b820191905f5260205f20905b815481529060010190602001808311612bd657829003601f168201915b50505050508152602001600282018054612c0c90613ecb565b80601f0160208091040260200160405190810160405280929190818152602001828054612c3890613ecb565b8015612c835780601f10612c5a57610100808354040283529160200191612c83565b820191905f5260205f20905b815481529060010190602001808311612c6657829003601f168201915b505050918352505060038201546001600160a01b0316602082015260048201546040820152600582018054606090920191612cbd90613ecb565b80601f0160208091040260200160405190810160405280929190818152602001828054612ce990613ecb565b8015612d345780601f10612d0b57610100808354040283529160200191612d34565b820191905f5260205f20905b815481529060010190602001808311612d1757829003601f168201915b50505091835250506006820154602082015260078201546001600160a01b0390811660408301526008830154606083015260098301546080830152600a83015460a0830152600b9092015460c09091015260e082015161010083015192935091908216612de35760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207265636569766572206164647265737300000000000000006044820152606401610855565b6064811115612e345760405162461bcd60e51b815260206004820152601f60248201527f53706c6974206d757374206265206265747765656e203020616e6420313030006044820152606401610855565b8415612eac5760405163a9059cbb60e01b815261dead6004820152602481018690526001600160a01b038c169063a9059cbb906044016020604051808303815f875af1158015612e86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eaa9190613fbd565b505b8315612ff1575f612ebe600286613e95565b90505f612ecb8287613f7f565b90505f6064612eda8584613eb4565b612ee49190613e95565b90505f612ef18284613f7f565b90508115612f745760405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490528f169063a9059cbb906044016020604051808303815f875af1158015612f45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f699190613fbd565b50612f748f8361372d565b8015612fec5760405163a9059cbb60e01b81526001600160a01b038e81166004830152602482018390528f169063a9059cbb906044016020604051808303815f875af1158015612fc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fea9190613fbd565b505b505050505b50929e919d50909b505050505050505050505050565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152600b5482106130605760405162461bcd60e51b815260040161085590613d61565b505f908152600a6020908152604091829020825160e08101845281546001600160a01b039081168252600183015490811693820193909352600160a01b8304600290810b94820194909452600160b81b909204830b6060830152918201546080820152600382015460a082015260049091015460c082015290565b6003546001600160a01b031633146131055760405162461bcd60e51b815260040161085590614215565b6040516370a0823160e01b81523060048201525f905f516020615c435f395f51905f52906370a0823190602401602060405180830381865afa15801561314d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131719190613db2565b90505f81116131b85760405162461bcd60e51b81526020600482015260136024820152724e6f204241534520746f20776974686472617760681b6044820152606401610855565b60405163a9059cbb60e01b8152336004820152602481018290525f516020615c435f395f51905f529063a9059cbb906044016020604051808303815f875af1158015613206573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061322a9190613fbd565b5050565b6007602052815f5260405f208181548110613247575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f60208190529081526040902080546001820180546001600160a01b039092169291610ca790613ecb565b6003546001600160a01b031633146132b75760405162461bcd60e51b815260040161085590614215565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6006602052815f5260405f208181548110613247575f80fd5b6003546001600160a01b0316331461331b5760405162461bcd60e51b815260040161085590614215565b606481111561336c5760405162461bcd60e51b815260206004820152601d60248201527f4d756c7469706c6965722063616e6e6f742065786365656420313030250000006044820152606401610855565b600455565b5f818152600a60209081526040808320815160e08101835281546001600160a01b039081168252600183015480821695830195909552600160a01b8504600290810b94830194909452600160b81b909404830b6060820152918101546080830152600381015460a08301526004015460c0820152918482169186169190911090816133fc57846133fe565b855b90505f8261340c578661340e565b855b60405163095ea7b360e01b815273c36442b4a4522e871399cd717abdd847ab11fe8860048201525f1960248201529091506001600160a01b0383169063095ea7b3906044016020604051808303815f875af115801561346f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134939190613fbd565b5060405163095ea7b360e01b815273c36442b4a4522e871399cd717abdd847ab11fe8860048201525f1960248201526001600160a01b0382169063095ea7b3906044016020604051808303815f875af11580156134f2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135169190613fbd565b5073c36442b4a4522e871399cd717abdd847ab11fe885f8461353c57856020015161353f565b85515b90505f8561355a5786606001516135559061424c565b613568565b86604001516135689061424c565b90505f8661357a578760400151613580565b87606001515b90505f87613592578860a00151613598565b88608001515b90505f886135aa5789608001516135b0565b8960a001515b6040516309f56ab160e11b81526001600160a01b038a81166004830152898116602483015261271060448301528781166064830152919250908716906313ead562906084016020604051808303815f875af1158015613611573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136359190613d97565b5060408051610160810182526001600160a01b038a81168252898116602083015261271082840152600287810b606084015286900b608083015260a0820185905260c082018490525f60e08301819052610100830181905230610120840152426101408401529251634418b22b60e11b8152908916916388316456916136be919060040161426c565b6080604051808303815f875af11580156136da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136fe9190614330565b5050506001600160a01b038f165f90815260096020526040902081905590505050505050505050505050505050565b6001600160a01b0382165f9081526008602052604081208054839290613754908490613f92565b90915550505050565b6118d98061436a83390190565b6001600160a01b038116811461377e575f5ffd5b50565b8060020b811461377e575f5ffd5b5f5f5f5f5f5f5f5f610100898b0312156137a7575f5ffd5b8835975060208901356137b98161376a565b965060408901356137c98161376a565b955060608901356137d981613781565b945060808901356137e981613781565b979a969950949793969560a0850135955060c08501359460e001359350915050565b80356138168161376a565b919050565b5f6020828403121561382b575f5ffd5b81356138368161376a565b9392505050565b602080825282518282018190525f918401906040840190835b8181101561387d5783516001600160a01b0316835260209384019390920191600101613856565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038d168152610180602082018190525f906138da9083018e613888565b82810360408401526138ec818e613888565b6001600160a01b038d166060850152608084018c905283810360a08501529050613916818b613888565b9150508760c083015261393460e08301886001600160a01b03169052565b856101008301528461012083015283610140830152826101608301529d9c50505050505050505050505050565b5f60208284031215613971575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261399b575f5ffd5b813567ffffffffffffffff8111156139b5576139b5613978565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156139e4576139e4613978565b6040528181528382016020018510156139fb575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215613a29575f5ffd5b833567ffffffffffffffff811115613a3f575f5ffd5b613a4b8682870161398c565b935050602084013567ffffffffffffffff811115613a67575f5ffd5b613a738682870161398c565b9250506040840135613a848161376a565b809150509250925092565b602081525f6138366020830184613888565b5f5f60408385031215613ab2575f5ffd5b8235613abd8161376a565b91506020830135613acd8161376a565b809150509250929050565b5f5f5f5f5f5f5f60e0888a031215613aee575f5ffd5b8735613af98161376a565b96506020880135613b098161376a565b95506040880135613b1981613781565b94506060880135613b2981613781565b9699959850939660808101359560a0820135955060c0909101359350915050565b5f5f5f5f5f5f5f5f610100898b031215613b62575f5ffd5b883567ffffffffffffffff811115613b78575f5ffd5b613b848b828c0161398c565b985050602089013567ffffffffffffffff811115613ba0575f5ffd5b613bac8b828c0161398c565b975050604089013567ffffffffffffffff811115613bc8575f5ffd5b613bd48b828c0161398c565b965050606089013594506137e960808a0161380b565b5f5f60408385031215613bfb575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613d2b57868503603f19018452815180516001600160a01b0316865260208101516101806020880152613c6b610180880182613888565b905060408201518782036040890152613c848282613888565b9150506060820151613ca160608901826001600160a01b03169052565b506080820151608088015260a082015187820360a0890152613cc38282613888565b91505060c082015160c088015260e0820151613cea60e08901826001600160a01b03169052565b506101008281015190880152610120808301519088015261014080830151908801526101609182015191909601526020938401939190910190600101613c30565b50929695505050505050565b5f5f60408385031215613d48575f5ffd5b8235613d538161376a565b946020939093013593505050565b602080825260119082015270125b9d985b1a590818dbdb999a59c81251607a1b604082015260600190565b80516138168161376a565b5f60208284031215613da7575f5ffd5b81516138368161376a565b5f60208284031215613dc2575f5ffd5b5051919050565b805161381681613781565b805161ffff81168114613816575f5ffd5b80518015158114613816575f5ffd5b5f5f5f5f5f5f5f60e0888a031215613e0a575f5ffd5b8751613e158161376a565b6020890151909750613e2681613781565b9550613e3460408901613dd4565b9450613e4260608901613dd4565b9350613e5060808901613dd4565b925060a088015160ff81168114613e65575f5ffd5b9150613e7360c08901613de5565b905092959891949750929550565b634e487b7160e01b5f52601160045260245ffd5b5f82613eaf57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176126ab576126ab613e81565b600181811c90821680613edf57607f821691505b602082108103613efd57634e487b7160e01b5f52602260045260245ffd5b50919050565b608081525f613f156080830187613888565b8281036020840152613f278187613888565b6001600160a01b03958616604085015293909416606090920191909152509392505050565b5f81518060208401855e5f93019283525090919050565b5f613f77613f718386613f4c565b84613f4c565b949350505050565b818103818111156126ab576126ab613e81565b808201808211156126ab576126ab613e81565b5f60018201613fb657613fb6613e81565b5060010190565b5f60208284031215613fcd575f5ffd5b61383682613de5565b601f82111561401d57805f5260205f20601f840160051c81016020851015613ffb5750805b601f840160051c820191505b8181101561401a575f8155600101614007565b50505b505050565b815167ffffffffffffffff81111561403c5761403c613978565b6140508161404a8454613ecb565b84613fd6565b6020601f821160018114614082575f831561406b5750848201515b5f19600385901b1c1916600184901b17845561401a565b5f84815260208120601f198516915b828110156140b15787850151825560209485019460019092019101614091565b50848210156140ce57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52603260045260245ffd5b805162ffffff81168114613816575f5ffd5b80516001600160801b0381168114613816575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f031215614135575f5ffd5b8c516bffffffffffffffffffffffff81168114614150575f5ffd5b9b5061415e60208e01613d8c565b9a5061416c60408e01613d8c565b995061417a60608e01613d8c565b985061418860808e016140f1565b975061419660a08e01613dc9565b96506141a460c08e01613dc9565b95506141b260e08e01614103565b6101008e01516101208f0151919650945092506141d26101408e01614103565b91506141e16101608e01614103565b90509295989b509295989b509295989b565b5f5f60408385031215614204575f5ffd5b505080516020909101519092909150565b60208082526018908201527f43616c6c6572206973206e6f7420636f6e74726f6c6c65720000000000000000604082015260600190565b5f8160020b627fffff19810361426457614264613e81565b5f0392915050565b81516001600160a01b031681526101608101602083015161429860208401826001600160a01b03169052565b5060408301516142af604084018262ffffff169052565b5060608301516142c4606084018260020b9052565b5060808301516142d9608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008301516101008301526101208301516143206101208401826001600160a01b03169052565b5061014092830151919092015290565b5f5f5f5f60808587031215614343575f5ffd5b8451935061435360208601614103565b604086015160609096015194979096509250505056fe608060405234801561000f575f5ffd5b506040516118d93803806118d983398101604081905261002e916106e8565b8383600361003c83826107f0565b50600461004982826107f0565b5050600580546001600160a01b038085166001600160a01b031992831617909255600680549286169290911691909117905550436007555f610089601290565b61009490600a6109a3565b6100a290633b9aca006109b8565b905060646100b16002836109b8565b6100bb91906109cf565b6008556100c882826100d2565b5050505050610a1a565b6001600160a01b0382166101005760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b61010b5f838361010f565b5050565b6007544311801561012e5750600560075461012a91906109ee565b4311155b15610421575f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610184573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a89190610a01565b604051630b4c774160e11b8152306004820152738d0d000ee44948fc98c9b98a4fa4921476f08b0d602482015261271060448201529091505f906001600160a01b03831690631698ee8290606401602060405180830381865afa158015610211573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102359190610a01565b9050806001600160a01b0316856001600160a01b031614801561026657506005546001600160a01b03858116911614155b801561028057506006546001600160a01b03858116911614155b1561032a57325f90815260096020526040812080548592906102a39084906109ee565b90915550506008546064906102b990606e6109b8565b6102c391906109cf565b325f90815260096020526040902054111561032a5760405162461bcd60e51b815260206004820152602160248201527f4b656570696e6720322520706f6f6c204c696d69747320496e204b6f6e74726f6044820152601b60fa1b60648201526084016100f7565b6006546001600160a01b0385811691161480159061035657506005546001600160a01b03858116911614155b80156103745750806001600160a01b0316846001600160a01b031614155b801561038857506001600160a01b03851615155b1561041e57600854836103af866001600160a01b03165f9081526020819052604090205490565b6103b991906109ee565b111561041e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782077616c6c6574206c696d697420657863656564656420647572696e6760448201526d081b185d5b98da081c195c9a5bd960921b60648201526084016100f7565b50505b6007544314801561043a57506001600160a01b03831615155b801561045457506005546001600160a01b03838116911614155b801561046e57506005546001600160a01b03848116911614155b80156104a157506005546001600160a01b03848116911614801561049f57506006546001600160a01b038381169116145b155b156104fa5760405162461bcd60e51b8152602060048201526024808201527f4e6f206275797320616c6c6f77656420647572696e67206c61756e636820626c6044820152636f636b2160e01b60648201526084016100f7565b61050583838361050a565b505050565b6001600160a01b038316610534578060025f82825461052991906109ee565b909155506105a49050565b6001600160a01b0383165f90815260208190526040902054818110156105865760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100f7565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105c0576002805482900390556105de565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062391815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610653575f5ffd5b81516001600160401b0381111561066c5761066c610630565b604051601f8201601f19908116603f011681016001600160401b038111828210171561069a5761069a610630565b6040528181528382016020018510156106b1575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146106e3575f5ffd5b919050565b5f5f5f5f608085870312156106fb575f5ffd5b84516001600160401b03811115610710575f5ffd5b61071c87828801610644565b602087015190955090506001600160401b03811115610739575f5ffd5b61074587828801610644565b935050610754604086016106cd565b9150610762606086016106cd565b905092959194509250565b600181811c9082168061078157607f821691505b60208210810361079f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561050557805f5260205f20601f840160051c810160208510156107ca5750805b601f840160051c820191505b818110156107e9575f81556001016107d6565b5050505050565b81516001600160401b0381111561080957610809610630565b61081d81610817845461076d565b846107a5565b6020601f82116001811461084f575f83156108385750848201515b5f19600385901b1c1916600184901b1784556107e9565b5f84815260208120601f198516915b8281101561087e578785015182556020948501946001909201910161085e565b508482101561089b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156108f9578085048111156108dd576108dd6108aa565b60018416156108eb57908102905b60019390931c9280026108c2565b935093915050565b5f8261090f5750600161099d565b8161091b57505f61099d565b8160018114610931576002811461093b57610957565b600191505061099d565b60ff84111561094c5761094c6108aa565b50506001821b61099d565b5060208310610133831016604e8410600b841016171561097a575081810a61099d565b6109865f1984846108be565b805f1904821115610999576109996108aa565b0290505b92915050565b5f6109b160ff841683610901565b9392505050565b808202811582820484141761099d5761099d6108aa565b5f826109e957634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561099d5761099d6108aa565b5f60208284031215610a11575f5ffd5b6109b1826106cd565b610eb280610a275f395ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80634bde38c81161009e57806395d89b411161006e57806395d89b411461024a578063a9059cbb14610252578063cbbc94cf14610265578063dd62ed3e14610297578063ec342ad0146102cf575f5ffd5b80634bde38c8146101e957806370a08231146101fc57806374580e2f1461022457806379cc679014610237575f5ffd5b80631bea83fe116100e45780631bea83fe1461018f57806323b872dd146101aa5780632f4237c0146101bd578063313ce567146101c557806342966c68146101d4575f5ffd5b806302d05d3f1461011557806306fdde0314610145578063095ea7b31461015a57806318160ddd1461017d575b5f5ffd5b600654610128906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61014d6102ea565b60405161013c9190610cab565b61016d610168366004610cf4565b61037a565b604051901515815260200161013c565b6002545b60405190815260200161013c565b61012873c36442b4a4522e871399cd717abdd847ab11fe8881565b61016d6101b8366004610d1e565b610393565b61016d6103b6565b6040516012815260200161013c565b6101e76101e2366004610d5c565b6103ce565b005b600554610128906001600160a01b031681565b61018161020a366004610d73565b6001600160a01b03165f9081526020819052604090205490565b6101e7610232366004610d73565b6103db565b6101e7610245366004610cf4565b61045c565b61014d610475565b61016d610260366004610cf4565b610484565b61026d610491565b604080516001600160a01b039485168152928416602084015292169181019190915260600161013c565b6101816102a5366004610d95565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610128738d0d000ee44948fc98c9b98a4fa4921476f08b0d81565b6060600380546102f990610dcc565b80601f016020809104026020016040519081016040528092919081815260200182805461032590610dcc565b80156103705780601f1061034757610100808354040283529160200191610370565b820191905f5260205f20905b81548152906001019060200180831161035357829003601f168201915b5050505050905090565b5f336103878185856105a3565b60019150505b92915050565b5f336103a08582856105b5565b6103ab858585610631565b506001949350505050565b5f60056007546103c69190610e18565b431115905090565b6103d8338261068e565b50565b6005546001600160a01b0316331461043a5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920706c6174666f726d2063616e206368616e67652063726561746f7260448201526064015b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6104678233836105b5565b610471828261068e565b5050565b6060600480546102f990610dcc565b5f33610387818585610631565b5f5f5f5f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105099190610e2b565b604051630b4c774160e11b8152306004820152738d0d000ee44948fc98c9b98a4fa4921476f08b0d602482015261271060448201529091505f906001600160a01b03831690631698ee8290606401602060405180830381865afa158015610572573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105969190610e2b565b9530955091935090915050565b6105b083838360016106c2565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981101561062b578181101561061d57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610431565b61062b84848484035f6106c2565b50505050565b6001600160a01b03831661065a57604051634b637e8f60e11b81525f6004820152602401610431565b6001600160a01b0382166106835760405163ec442f0560e01b81525f6004820152602401610431565b6105b0838383610794565b6001600160a01b0382166106b757604051634b637e8f60e11b81525f6004820152602401610431565b610471825f83610794565b6001600160a01b0384166106eb5760405163e602df0560e01b81525f6004820152602401610431565b6001600160a01b03831661071457604051634a1406b160e11b81525f6004820152602401610431565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561062b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078691815260200190565b60405180910390a350505050565b600754431180156107b3575060056007546107af9190610e18565b4311155b15610aa6575f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610809573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082d9190610e2b565b604051630b4c774160e11b8152306004820152738d0d000ee44948fc98c9b98a4fa4921476f08b0d602482015261271060448201529091505f906001600160a01b03831690631698ee8290606401602060405180830381865afa158015610896573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ba9190610e2b565b9050806001600160a01b0316856001600160a01b03161480156108eb57506005546001600160a01b03858116911614155b801561090557506006546001600160a01b03858116911614155b156109af57325f9081526009602052604081208054859290610928908490610e18565b909155505060085460649061093e90606e610e46565b6109489190610e5d565b325f9081526009602052604090205411156109af5760405162461bcd60e51b815260206004820152602160248201527f4b656570696e6720322520706f6f6c204c696d69747320496e204b6f6e74726f6044820152601b60fa1b6064820152608401610431565b6006546001600160a01b038581169116148015906109db57506005546001600160a01b03858116911614155b80156109f95750806001600160a01b0316846001600160a01b031614155b8015610a0d57506001600160a01b03851615155b15610aa35760085483610a34866001600160a01b03165f9081526020819052604090205490565b610a3e9190610e18565b1115610aa35760405162461bcd60e51b815260206004820152602e60248201527f4d61782077616c6c6574206c696d697420657863656564656420647572696e6760448201526d081b185d5b98da081c195c9a5bd960921b6064820152608401610431565b50505b60075443148015610abf57506001600160a01b03831615155b8015610ad957506005546001600160a01b03838116911614155b8015610af357506005546001600160a01b03848116911614155b8015610b2657506005546001600160a01b038481169116148015610b2457506006546001600160a01b038381169116145b155b15610b7f5760405162461bcd60e51b8152602060048201526024808201527f4e6f206275797320616c6c6f77656420647572696e67206c61756e636820626c6044820152636f636b2160e01b6064820152608401610431565b6105b08383836001600160a01b038316610baf578060025f828254610ba49190610e18565b90915550610c1f9050565b6001600160a01b0383165f9081526020819052604090205481811015610c015760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610431565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c3b57600280548290039055610c59565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9e91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103d8575f5ffd5b5f5f60408385031215610d05575f5ffd5b8235610d1081610ce0565b946020939093013593505050565b5f5f5f60608486031215610d30575f5ffd5b8335610d3b81610ce0565b92506020840135610d4b81610ce0565b929592945050506040919091013590565b5f60208284031215610d6c575f5ffd5b5035919050565b5f60208284031215610d83575f5ffd5b8135610d8e81610ce0565b9392505050565b5f5f60408385031215610da6575f5ffd5b8235610db181610ce0565b91506020830135610dc181610ce0565b809150509250929050565b600181811c90821680610de057607f821691505b602082108103610dfe57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561038d5761038d610e04565b5f60208284031215610e3b575f5ffd5b8151610d8e81610ce0565b808202811582820484141761038d5761038d610e04565b5f82610e7757634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220bbce589fbdef2b409028356f905c573b6b81f71646c7b85a23cd1eeba33f0f0864736f6c634300081e00330000000000000000000000008d0d000ee44948fc98c9b98a4fa4921476f08b0da2646970667358221220ef39bbefa3e6d09b42f72fb5ed91baf799d0b7f2de3a1f0b2028455fa19307bb64736f6c634300081e0033