172 txs
109 calls
constructor
constructor()
functions
creatorTokens
viewfunction creatorTokens(address, uint256) view returns (address)
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 marketCapInETH, 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 ethAmount) 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, uint256 penaltyMultiplier)
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 marketCapInETH, address receiver, uint256 split, uint256 nftId, uint256 tokenBalance, uint256 totalFeesGenerated)
tokenToNFTId
viewfunction tokenToNFTId(address) view returns (uint256)
WETH
viewfunction WETH() view returns (address)
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, uint256 _penaltyMultiplier) returns (uint256 configId)
deleteLiquidityConfig
nonpayablefunction deleteLiquidityConfig(uint256 _configId)
deployCoin
payablefunction deployCoin(string _name, string _symbol, string _metadata, bytes32 salt, address receiver, uint256 split, uint256 configId) payable returns (uint256 tokensReceived)
setItemsPerPage
nonpayablefunction setItemsPerPage(uint256 _itemsPerPage)
toggleDeployCoin
nonpayablefunction toggleDeployCoin()
updateLiquidityConfig
nonpayablefunction updateLiquidityConfig(uint256 _configId, uint160 _sqrtPriceX96A, uint160 _sqrtPriceX96B, int24 _tickLower, int24 _tickUpper, uint256 _amount0Desired, uint256 _amount1Desired, uint256 _virtualAmount, uint256 _penaltyMultiplier)
withdrawFeesETH
nonpayablefunction withdrawFeesETH()
withdrawFeesWETH
nonpayablefunction withdrawFeesWETH()
events
ERC20TokenCreated
event ERC20TokenCreated(address tokenAddress)
TokenPurchased
event TokenPurchased(address buyer, address tokenOut, uint256 ethSpent, uint256 tokensReceived)
errors
No errors.
creation bytecode
0x60806040525f60028190556003805460ff60a01b191690556101f4600455600a5534801561002b575f5ffd5b50600380546001600160a01b0319908116331790915560408051610100810182526a0289c06ea6df5a36ae398a81526d64dbacb643e10eedf7378a0b5df76020808301918252620318f8938301938452620d89a0606084019081526b033b2e3c9fd0803ce8000000608085019081525f60a086018181526714d1120d7b16000060c08801908152606460e08901908152928052600990955295517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b80546001600160a01b039283169a169990991790985593517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6c80549751935162ffffff908116600160b81b0262ffffff60b81b1991909516600160a01b026001600160b81b0319909916929099169190911796909617969096161790935592517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6d55517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6e55517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6f55517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f70556001600a55615954806102035f395ff3fe6080604052600436106101de575f3560e01c80639bea0919116100fd578063bf107b5211610092578063ec81aadb11610062578063ec81aadb14610698578063f6239162146106b7578063f7b64c83146106d6578063f861063c146106ea575f5ffd5b8063bf107b521461056b578063c600589314610596578063c69d61b6146105bd578063db3fa4cc14610679575f5ffd5b8063aced8d81116100cd578063aced8d81146104b8578063ad5c4648146104e4578063b17acdcd1461050b578063b9ea0aea1461053f575f5ffd5b80639bea0919146104515780639f181b5e146104705780639f9baaaa14610485578063a6a9cb1314610499575f5ffd5b80635bdb9d6a116101735780638d99aeb0116101435780638d99aeb0146103d45780638eb4b7cf14610400578063964a04951461041357806396e5968214610432575f5ffd5b80635bdb9d6a14610332578063633ff5c31461036657806367587046146103855780637ff4cffb146103b5575f5ffd5b80633bcc75f6116101ae5780633bcc75f61461029a578063521078b5146102b95780635442a67f146102e55780635a3afecf1461031c575f5ffd5b80631bea83fe146101e95780632486b0461461022d5780632ef780d41461025057806339dbc3df1461027b575f5ffd5b366101e557005b5f5ffd5b3480156101f4575f5ffd5b5061021073c36442b4a4522e871399cd717abdd847ab11fe8881565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610238575f5ffd5b50610242600a5481565b604051908152602001610224565b34801561025b575f5ffd5b5061024261026a366004613380565b60076020525f908152604090205481565b348015610286575f5ffd5b50610242610295366004613380565b610709565b3480156102a5575f5ffd5b50600354610210906001600160a01b031681565b3480156102c4575f5ffd5b506102d86102d3366004613380565b610a28565b60405161022491906133a2565b3480156102f0575f5ffd5b506103046102ff366004613380565b610a9b565b6040516102249c9b9a9998979695949392919061341b565b348015610327575f5ffd5b50610330610cab565b005b34801561033d575f5ffd5b5061024261034c366004613380565b6001600160a01b03165f9081526007602052604090205490565b348015610371575f5ffd5b506102426103803660046134d4565b610e92565b348015610390575f5ffd5b506003546103a590600160a01b900460ff1681565b6040519015158152602001610224565b3480156103c0575f5ffd5b506103306103cf36600461354f565b611037565b3480156103df575f5ffd5b506103f36103ee366004613605565b611120565b604051610224919061367d565b61024261040e36600461368f565b611191565b34801561041e575f5ffd5b5061033061042d36600461374a565b611875565b34801561043d575f5ffd5b5061024261044c36600461354f565b61199e565b34801561045c575f5ffd5b506102d861046b366004613380565b611a17565b34801561047b575f5ffd5b5061024260025481565b348015610490575f5ffd5b50610330611a88565b3480156104a4575f5ffd5b506103306104b336600461354f565b611b09565b3480156104c3575f5ffd5b506104d76104d2366004613781565b611c38565b60405161022491906137a1565b3480156104ef575f5ffd5b5061021073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b348015610516575f5ffd5b5061052a61052536600461354f565b612277565b60408051928352602083019190915201610224565b34801561054a575f5ffd5b5061055e61055936600461354f565b612b6a565b60405161022491906138ce565b348015610576575f5ffd5b50610242610585366004613380565b60086020525f908152604090205481565b3480156105a1575f5ffd5b506102107368b3465833fb72a70ecdf485e0e4c7bd8665fc4581565b3480156105c8575f5ffd5b5061062a6105d736600461354f565b60096020525f9081526040902080546001820154600280840154600385015460048601546005909601546001600160a01b039586169695851695600160a01b8604850b95600160b81b900490940b939088565b604080516001600160a01b03998a168152989097166020890152600295860b968801969096529290930b6060860152608085015260a084019190915260c083015260e082015261010001610224565b348015610684575f5ffd5b50610210610693366004613940565b612c51565b3480156106a3575f5ffd5b506103046106b236600461354f565b612c85565b3480156106c2575f5ffd5b506103306106d136600461396a565b612cb0565b3480156106e1575f5ffd5b50610330612e57565b3480156106f5575f5ffd5b50610210610704366004613940565b612ea2565b5f5f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077f91906139fa565b90505f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f691906139fa565b604051630b4c774160e11b81526001600160a01b038681166004830152848116602483015261271060448301529192505f91831690631698ee8290606401602060405180830381865afa15801561084f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087391906139fa565b90506001600160a01b03811661088d57505f949350505050565b5f856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ee9190613a15565b90505f826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561092d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109519190613a57565b5050505050509050806001600160a01b03165f148061096e575081155b1561097f57505f9695505050505050565b6001600160a01b038086169088161080156109d7575f6109a464e8d4a5100085613af8565b90505f60606109bc6001600160a01b03861680613b17565b901c905060606109cc8284613b17565b901c98505050610a1d565b5f6109e764e8d4a5100085613af8565b90505f60606109ff6001600160a01b03861680613b17565b901c90508015610a1a57610a1781606084901b613af8565b98505b50505b505050505050919050565b6001600160a01b0381165f90815260066020908152604091829020805483518184028101840190945280845260609392830182828015610a8f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610a71575b50505050509050919050565b600160208190525f9182526040909120805491810180546001600160a01b0390931692610ac790613b2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610af390613b2e565b8015610b3e5780601f10610b1557610100808354040283529160200191610b3e565b820191905f5260205f20905b815481529060010190602001808311610b2157829003601f168201915b505050505090806002018054610b5390613b2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7f90613b2e565b8015610bca5780601f10610ba157610100808354040283529160200191610bca565b820191905f5260205f20905b815481529060010190602001808311610bad57829003601f168201915b505050506003830154600484015460058501805494956001600160a01b039093169491935090610bf990613b2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2590613b2e565b8015610c705780601f10610c4757610100808354040283529160200191610c70565b820191905f5260205f20905b815481529060010190602001808311610c5357829003601f168201915b5050506006840154600785015460088601546009870154600a880154600b90980154969793966001600160a01b03909316955090935091908c565b6003546001600160a01b03163314610cde5760405162461bcd60e51b8152600401610cd590613b66565b60405180910390fd5b6040516370a0823160e01b81523060048201525f9073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015610d2d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d519190613a15565b90505f8111610d985760405162461bcd60e51b81526020600482015260136024820152724e6f205745544820746f20776974686472617760681b6044820152606401610cd5565b604051632e1a7d4d60e01b81526004810182905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906024015f604051808303815f87803b158015610de2575f5ffd5b505af1158015610df4573d5f5f3e3d5ffd5b505050505f336001600160a01b0316826040515b5f6040518083038185875af1925050503d805f8114610e42576040519150601f19603f3d011682016040523d82523d5f602084013e610e47565b606091505b5050905080610e8e5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610cd5565b5050565b6003545f906001600160a01b03163314610f0b5760405162461bcd60e51b815260206004820152603460248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e20637265604482015273617465206c697175696469747920636f6e66696760601b6064820152608401610cd5565b600a8210158015610f1e57506101f48211155b610f3a5760405162461bcd60e51b8152600401610cd590613b9d565b50600a805460408051610100810182526001600160a01b038c811682528b8116602080840191825260028d810b8587019081528d820b60608701908152608087018e815260a088018e815260c089018e815260e08a018e81525f8d815260099098529a872099518a546001600160a01b031916908a16178a55965160018a01805495519451919099166001600160b81b031990951694909417600160a01b62ffffff948516021762ffffff60b81b1916600160b81b9390941692909202929092179095555190850155915160038401555160048301559151600590910155825491929061102683613bec565b919050555098975050505050505050565b6003546001600160a01b031633146110ac5760405162461bcd60e51b815260206004820152603260248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e206368616044820152716e6765206974656d7320706572207061676560701b6064820152608401610cd5565b5f811180156110bd57506103e88111155b61111b5760405162461bcd60e51b815260206004820152602960248201527f4974656d73207065722070616765206d757374206265206265747765656e2031604482015268020616e6420313030360bc1b6064820152608401610cd5565b600455565b6060604051806020016111329061334c565b601f1982820381018352601f90910116604081905261115b908690869086903090602001613c04565b60408051601f19818403018152908290526111799291602001613c64565b60405160208183030381529060405290509392505050565b6003545f90600160a01b900460ff166111fb5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e206465706c6f796d656e742069732063757272656e746c792064696044820152651cd8589b195960d21b6064820152608401610cd5565b600a54821061124c5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c697175696469747920636f6e66696720494400000000006044820152606401610cd5565b5f858989333060405161125e9061334c565b61126b9493929190613c04565b8190604051809103905ff5905080158015611288573d5f5f3e3d5ffd5b506040516001600160a01b03821681529091507f60122e78030aba0a2e4a67adb3e52b411343cc51778f919095d3fe394090c1b29060200160405180910390a1806112e88173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc286612ebb565b5f925034156115a8575f6112fb3461199e565b5f86815260096020908152604080832081516101008101835281546001600160a01b039081168252600183015490811694820194909452600160a01b8404600290810b93820193909352600160b81b909304820b6060840152908101546080830152600381015460a0830152600481015460c08301526005015460e082018190529293509160649061138d9085613b17565b6113979190613af8565b90505f6127106113a78334613b17565b6113b19190613af8565b90505f6113be8234613c80565b6040805160e08101825273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281526001600160a01b03898116602083019081526127108385019081523060608501908152608085018781525f60a0870181815260c0880191825297516304e45aaf60e01b8152965186166004880152935185166024870152915162ffffff1660448601525183166064850152516084840152925160a4830152915190911660c48201529091507368b3465833fb72a70ecdf485e0e4c7bd8665fc45906304e45aaf90839060e40160206040518083038185885af11580156114a1573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114c69190613a15565b506040516370a0823160e01b815230600482015286906001600160a01b038216906370a0823190602401602060405180830381865afa15801561150b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152f9190613a15565b60405163a9059cbb60e01b8152336004820152602481018290529099506001600160a01b0382169063a9059cbb906044016020604051808303815f875af115801561157c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a09190613c93565b505050505050505b60408051610180810182526001600160a01b0383811680835260208084018f81528486018f905233606086015242608086015260a085018e90525f60c086018190528c851660e087015261010086018c9052928352600882528583205461012086015261014085018390526101608501839052600254835290829052939020825181546001600160a01b031916921691909117815591519091829160018201906116529082613cf7565b50604082015160028201906116679082613cf7565b5060608201516003820180546001600160a01b0319166001600160a01b039092169190911790556080820151600482015560a082015160058201906116ac9082613cf7565b5060c0820151600682015560e08201516007820180546001600160a01b039283166001600160a01b03199182161790915561010084015160088401556101208401516009840155610140840151600a84015561016090930151600b909201919091558381165f908152600160208181526040909220855181549416939094169290921783558301518392918201906117449082613cf7565b50604082015160028201906117599082613cf7565b5060608201516003820180546001600160a01b0319166001600160a01b039092169190911790556080820151600482015560a0820151600582019061179e9082613cf7565b5060c082015160068083019190915560e08301516007830180546001600160a01b039283166001600160a01b03199182161790915561010085015160088501556101208501516009850155610140850151600a85015561016090940151600b909301929092558982165f908152600560209081526040808320805460018181018355918552838520018054968a1696881687179055338452938252822080549384018155825281209091018054909316909117909155600280549161186283613bec565b9190505550505050979650505050505050565b6003546001600160a01b031633146118e35760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e2063686160448201526a3733b29031b932b0ba37b960a91b6064820152608401610cd5565b6001600160a01b0381166119445760405162461bcd60e51b815260206004820152602260248201527f4e65772063726561746f722063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610cd5565b6040516374580e2f60e01b81526001600160a01b0382811660048301528316906374580e2f906024015f604051808303815f87803b158015611984575f5ffd5b505af1158015611996573d5f5f3e3d5ffd5b505050505050565b5f66b1a2bc2ec500008210156119b557505f919050565b670429d069189e000082106119cd5750611388919050565b6146505f6119e266b1a2bc2ec5000085613c80565b90505f670de0b6b3a76400006119f88484613b17565b611a029190613af8565b611a0e906101f4613db2565b95945050505050565b6001600160a01b0381165f90815260056020908152604091829020805483518184028101840190945280845260609392830182828015610a8f57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610a715750505050509050919050565b6003546001600160a01b03163314611ab25760405162461bcd60e51b8152600401610cd590613b66565b4780611af55760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b6044820152606401610cd5565b5f336001600160a01b031682604051610e08565b6003546001600160a01b03163314611b805760405162461bcd60e51b815260206004820152603460248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e2064656c604482015273657465206c697175696469747920636f6e66696760601b6064820152608401610cd5565b600a548110611ba15760405162461bcd60e51b8152600401610cd590613dc5565b805f03611bf05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742064656c6574652064656661756c7420636f6e666967000000006044820152606401610cd5565b5f90815260096020526040812080546001600160a01b03191681556001810180546001600160d01b031916905560028101829055600381018290556004810182905560050155565b60605f60025411611c805760405162461bcd60e51b8152602060048201526012602482015271139bc81d1bdad95b9cc819195c1b1bde595960721b6044820152606401610cd5565b5f6004546001600454600254611c969190613db2565b611ca09190613c80565b611caa9190613af8565b9050808410611cef5760405162461bcd60e51b815260206004820152601160248201527050616765206f7574206f662072616e676560781b6044820152606401610cd5565b5f8080858103611d7857600454611d07886001613db2565b611d119190613b17565b60025411611d1f575f611d44565b600454611d2d886001613db2565b611d379190613b17565b600254611d449190613c80565b925060045487611d549190613b17565b600254611d619190613c80565b9150600254821115611d735760025491505b611da7565b600454611d859088613b17565b925060045483611d959190613db2565b9150600254821115611da75760025491505b5f611db28484613c80565b67ffffffffffffffff811115611dca57611dca613566565b604051908082528060200260200182016040528015611e7157816020015b611e5e6040518061018001604052805f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f8152602001606081526020015f81526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81525090565b815260200190600190039081611de85790505b509050835b83811015612269575f8815611e8b5781611eaa565b611e958683613c80565b611ea0600187613c80565b611eaa9190613c80565b5f818152602081815260408083208151610180810190925280546001600160a01b03168252600181018054959650939491939092840191611eea90613b2e565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1690613b2e565b8015611f615780601f10611f3857610100808354040283529160200191611f61565b820191905f5260205f20905b815481529060010190602001808311611f4457829003601f168201915b50505050508152602001600282018054611f7a90613b2e565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa690613b2e565b8015611ff15780601f10611fc857610100808354040283529160200191611ff1565b820191905f5260205f20905b815481529060010190602001808311611fd457829003601f168201915b505050918352505060038201546001600160a01b031660208201526004820154604082015260058201805460609092019161202b90613b2e565b80601f016020809104026020016040519081016040528092919081815260200182805461205790613b2e565b80156120a25780601f10612079576101008083540402835291602001916120a2565b820191905f5260205f20905b81548152906001019060200180831161208557829003601f168201915b50505091835250506006820154602082015260078201546001600160a01b031660408201526008820154606082015260098201546080820152600a82015460a0820152600b9091015460c09091015280519091505f9061210190610709565b825160e08401516040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa158015612151573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121759190613a15565b9050604051806101800160405280845f01516001600160a01b03168152602001846020015181526020018460400151815260200184606001516001600160a01b03168152602001846080015181526020018460a0015181526020018381526020018460e001516001600160a01b031681526020018461010001518152602001846101200151815260200182815260200160075f865f01516001600160a01b03166001600160a01b031681526020019081526020015f205481525086888061223b90613bec565b99508151811061224d5761224d613df0565b6020026020010181905250505050508080600101915050611e76565b509450505050505b92915050565b60405163133f757160e31b8152600481018290525f9081908190819073c36442b4a4522e871399cd717abdd847ab11fe88906399fbab889060240161018060405180830381865afa1580156122ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122f29190613e2c565b50979b509599508a985089975050506001600160a01b03871673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2149450508315925061235291505057506001600160a01b03831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214155b1561235d5750819050825b5f826001600160a01b03166302d05d3f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123be91906139fa565b9050336001600160a01b03821614806123e157506003546001600160a01b031633145b61241e5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610cd5565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015612462573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124869190613a15565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038516906370a0823190602401602060405180830381865afa1580156124cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f19190613a15565b604080516080810182528c81523060208201526001600160801b0391810182905260608101919091529091506001600160a01b03851673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21461257f5760405162461bcd60e51b81526020600482015260136024820152720e8ded6cadc6240daeae6e840c4ca40ae8aa89606b1b6044820152606401610cd5565b6040805163fc6f786560e01b81528251600482015260208301516001600160a01b03166024820152908201516001600160801b039081166044830152606083015116606482015273c36442b4a4522e871399cd717abdd847ab11fe889063fc6f78659060840160408051808303815f875af1158015612600573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126249190613f06565b50506040516370a0823160e01b81523060048201525f9084906001600160a01b038916906370a0823190602401602060405180830381865afa15801561266c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126909190613a15565b61269a9190613c80565b6040516370a0823160e01b81523060048201529091505f9084906001600160a01b038916906370a0823190602401602060405180830381865afa1580156126e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127079190613a15565b6127119190613c80565b6001600160a01b03808a165f9081526001602081815260408084208151610180810190925280549095168152918401805495965092949193929084019161275790613b2e565b80601f016020809104026020016040519081016040528092919081815260200182805461278390613b2e565b80156127ce5780601f106127a5576101008083540402835291602001916127ce565b820191905f5260205f20905b8154815290600101906020018083116127b157829003601f168201915b505050505081526020016002820180546127e790613b2e565b80601f016020809104026020016040519081016040528092919081815260200182805461281390613b2e565b801561285e5780601f106128355761010080835404028352916020019161285e565b820191905f5260205f20905b81548152906001019060200180831161284157829003601f168201915b505050918352505060038201546001600160a01b031660208201526004820154604082015260058201805460609092019161289890613b2e565b80601f01602080910402602001604051908101604052809291908181526020018280546128c490613b2e565b801561290f5780601f106128e65761010080835404028352916020019161290f565b820191905f5260205f20905b8154815290600101906020018083116128f257829003601f168201915b50505091835250506006820154602082015260078201546001600160a01b0390811660408301526008830154606083015260098301546080830152600a83015460a0830152600b9092015460c09091015260e0820151610100830151929350919082166129be5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207265636569766572206164647265737300000000000000006044820152606401610cd5565b6064811115612a0f5760405162461bcd60e51b815260206004820152601f60248201527f53706c6974206d757374206265206265747765656e203020616e6420313030006044820152606401610cd5565b8415612a875760405163a9059cbb60e01b81526001600160a01b038381166004830152602482018790528c169063a9059cbb906044016020604051808303815f875af1158015612a61573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a859190613c93565b505b8315612b5457604051632e1a7d4d60e01b8152600481018590526001600160a01b038b1690632e1a7d4d906024015f604051808303815f87803b158015612acc575f5ffd5b505af1158015612ade573d5f5f3e3d5ffd5b505050505f600285612af09190613af8565b90505f612afd8287613c80565b90505f6064612b0c8584613b17565b612b169190613af8565b90505f612b238284613c80565b90508115612b3f57612b358683613282565b612b3f8f8361331c565b8015612b4f57612b4f8d82613282565b505050505b50929e919d50909b505050505050505050505050565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152600a548210612bcb5760405162461bcd60e51b8152600401610cd590613dc5565b505f9081526009602090815260409182902082516101008101845281546001600160a01b039081168252600183015490811693820193909352600160a01b8304600290810b94820194909452600160b81b909204830b6060830152918201546080820152600382015460a0820152600482015460c082015260059091015460e082015290565b6006602052815f5260405f208181548110612c6a575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f60208190529081526040902080546001820180546001600160a01b039092169291610ac790613b2e565b6003546001600160a01b03163314612d275760405162461bcd60e51b815260206004820152603460248201527f4f6e6c7920706c6174666f726d20636f6e74726f6c6c65722063616e20757064604482015273617465206c697175696469747920636f6e66696760601b6064820152608401610cd5565b600a548910612d485760405162461bcd60e51b8152600401610cd590613dc5565b600a8110158015612d5b57506101f48111155b612d775760405162461bcd60e51b8152600401610cd590613b9d565b60408051610100810182526001600160a01b03998a1681529789166020808a01918252600298890b8a840190815297890b60608b0190815260808b0197885260a08b0196875260c08b0195865260e08b019485525f9c8d52600990915291909a20975188546001600160a01b031916908a16178855985160018801805496519a51919099166001600160b81b031990961695909517600160a01b62ffffff9a8b16021762ffffff60b81b1916600160b81b999095169890980293909317909555519183019190915591516003820155905160048201559051600590910155565b6003546001600160a01b03163314612e815760405162461bcd60e51b8152600401610cd590613b66565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005602052815f5260405f208181548110612c6a575f80fd5b5f81815260096020908152604080832081516101008101835281546001600160a01b039081168252600183015480821695830195909552600160a01b8504600290810b94830194909452600160b81b909404830b6060820152918101546080830152600381015460a0830152600481015460c08301526005015460e082015291848216918616919091109081612f515784612f53565b855b90505f82612f615786612f63565b855b60405163095ea7b360e01b815273c36442b4a4522e871399cd717abdd847ab11fe8860048201525f1960248201529091506001600160a01b0383169063095ea7b3906044016020604051808303815f875af1158015612fc4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fe89190613c93565b5060405163095ea7b360e01b815273c36442b4a4522e871399cd717abdd847ab11fe8860048201525f1960248201526001600160a01b0382169063095ea7b3906044016020604051808303815f875af1158015613047573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306b9190613c93565b5073c36442b4a4522e871399cd717abdd847ab11fe885f84613091578560200151613094565b85515b90505f856130af5786606001516130aa90613f28565b6130bd565b86604001516130bd90613f28565b90505f866130cf5787604001516130d5565b87606001515b90505f876130e7578860a001516130ed565b88608001515b90505f886130ff578960800151613105565b8960a001515b6040516309f56ab160e11b81526001600160a01b038a81166004830152898116602483015261271060448301528781166064830152919250908716906313ead562906084016020604051808303815f875af1158015613166573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061318a91906139fa565b5060408051610160810182526001600160a01b038a81168252898116602083015261271082840152600287810b606084015286900b608083015260a0820185905260c082018490525f60e08301819052610100830181905230610120840152426101408401529251634418b22b60e11b8152908916916388316456916132139190600401613f48565b6080604051808303815f875af115801561322f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613253919061400c565b5050506001600160a01b038f165f90815260086020526040902081905590505050505050505050505050505050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146132cb576040519150601f19603f3d011682016040523d82523d5f602084013e6132d0565b606091505b50509050806133175760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610cd5565b505050565b6001600160a01b0382165f9081526007602052604081208054839290613343908490613db2565b90915550505050565b6118d98061404683390190565b6001600160a01b038116811461336d575f5ffd5b50565b803561337b81613359565b919050565b5f60208284031215613390575f5ffd5b813561339b81613359565b9392505050565b602080825282518282018190525f918401906040840190835b818110156133e25783516001600160a01b03168352602093840193909201916001016133bb565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038d168152610180602082018190525f9061343f9083018e6133ed565b8281036040840152613451818e6133ed565b6001600160a01b038d166060850152608084018c905283810360a0850152905061347b818b6133ed565b9150508760c083015261349960e08301886001600160a01b03169052565b856101008301528461012083015283610140830152826101608301529d9c50505050505050505050505050565b8060020b811461336d575f5ffd5b5f5f5f5f5f5f5f5f610100898b0312156134ec575f5ffd5b88356134f781613359565b9750602089013561350781613359565b96506040890135613517816134c6565b95506060890135613527816134c6565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b5f6020828403121561355f575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613589575f5ffd5b813567ffffffffffffffff8111156135a3576135a3613566565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156135d2576135d2613566565b6040528181528382016020018510156135e9575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215613617575f5ffd5b833567ffffffffffffffff81111561362d575f5ffd5b6136398682870161357a565b935050602084013567ffffffffffffffff811115613655575f5ffd5b6136618682870161357a565b925050604084013561367281613359565b809150509250925092565b602081525f61339b60208301846133ed565b5f5f5f5f5f5f5f60e0888a0312156136a5575f5ffd5b873567ffffffffffffffff8111156136bb575f5ffd5b6136c78a828b0161357a565b975050602088013567ffffffffffffffff8111156136e3575f5ffd5b6136ef8a828b0161357a565b965050604088013567ffffffffffffffff81111561370b575f5ffd5b6137178a828b0161357a565b9550506060880135935061372d60808901613370565b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561375b575f5ffd5b823561376681613359565b9150602083013561377681613359565b809150509250929050565b5f5f60408385031215613792575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156138c257868503603f19018452815180516001600160a01b03168652602081015161018060208801526138026101808801826133ed565b90506040820151878203604089015261381b82826133ed565b915050606082015161383860608901826001600160a01b03169052565b506080820151608088015260a082015187820360a089015261385a82826133ed565b91505060c082015160c088015260e082015161388160e08901826001600160a01b03169052565b5061010082810151908801526101208083015190880152610140808301519088015261016091820151919096015260209384019391909101906001016137c7565b50929695505050505050565b81516001600160a01b0390811682526020808401519091169082015260408083015160020b908201526060808301516101008301916139119084018260020b9052565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b5f5f60408385031215613951575f5ffd5b823561395c81613359565b946020939093013593505050565b5f5f5f5f5f5f5f5f5f6101208a8c031215613983575f5ffd5b8935985060208a013561399581613359565b975060408a01356139a581613359565b965060608a01356139b5816134c6565b955060808a01356139c5816134c6565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b805161337b81613359565b5f60208284031215613a0a575f5ffd5b815161339b81613359565b5f60208284031215613a25575f5ffd5b5051919050565b805161337b816134c6565b805161ffff8116811461337b575f5ffd5b8051801515811461337b575f5ffd5b5f5f5f5f5f5f5f60e0888a031215613a6d575f5ffd5b8751613a7881613359565b6020890151909750613a89816134c6565b9550613a9760408901613a37565b9450613aa560608901613a37565b9350613ab360808901613a37565b925060a088015160ff81168114613ac8575f5ffd5b9150613ad660c08901613a48565b905092959891949750929550565b634e487b7160e01b5f52601160045260245ffd5b5f82613b1257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761227157612271613ae4565b600181811c90821680613b4257607f821691505b602082108103613b6057634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526018908201527f43616c6c6572206973206e6f7420636f6e74726f6c6c65720000000000000000604082015260600190565b6020808252602f908201527f50656e616c7479206d756c7469706c696572206d75737420626520626574776560408201526e656e2031302520616e64203530302560881b606082015260800190565b5f60018201613bfd57613bfd613ae4565b5060010190565b608081525f613c1660808301876133ed565b8281036020840152613c2881876133ed565b6001600160a01b03958616604085015293909416606090920191909152509392505050565b5f81518060208401855e5f93019283525090919050565b5f613c78613c728386613c4d565b84613c4d565b949350505050565b8181038181111561227157612271613ae4565b5f60208284031215613ca3575f5ffd5b61339b82613a48565b601f82111561331757805f5260205f20601f840160051c81016020851015613cd15750805b601f840160051c820191505b81811015613cf0575f8155600101613cdd565b5050505050565b815167ffffffffffffffff811115613d1157613d11613566565b613d2581613d1f8454613b2e565b84613cac565b6020601f821160018114613d57575f8315613d405750848201515b5f19600385901b1c1916600184901b178455613cf0565b5f84815260208120601f198516915b82811015613d865787850151825560209485019460019092019101613d66565b5084821015613da357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561227157612271613ae4565b602080825260119082015270125b9d985b1a590818dbdb999a59c81251607a1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b805162ffffff8116811461337b575f5ffd5b80516001600160801b038116811461337b575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f031215613e48575f5ffd5b8c516bffffffffffffffffffffffff81168114613e63575f5ffd5b9b50613e7160208e016139ef565b9a50613e7f60408e016139ef565b9950613e8d60608e016139ef565b9850613e9b60808e01613e04565b9750613ea960a08e01613a2c565b9650613eb760c08e01613a2c565b9550613ec560e08e01613e16565b6101008e01516101208f015191965094509250613ee56101408e01613e16565b9150613ef46101608e01613e16565b90509295989b509295989b509295989b565b5f5f60408385031215613f17575f5ffd5b505080516020909101519092909150565b5f8160020b627fffff198103613f4057613f40613ae4565b5f0392915050565b81516001600160a01b0316815261016081016020830151613f7460208401826001600160a01b03169052565b506040830151613f8b604084018262ffffff169052565b506060830151613fa0606084018260020b9052565b506080830151613fb5608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100830151610100830152610120830151613ffc6101208401826001600160a01b03169052565b5061014092830151919092015290565b5f5f5f5f6080858703121561401f575f5ffd5b8451935061402f60208601613e16565b604086015160609096015194979096509250505056fe608060405234801561000f575f5ffd5b506040516118d93803806118d983398101604081905261002e916106e8565b8383600361003c83826107f0565b50600461004982826107f0565b5050600580546001600160a01b038085166001600160a01b031992831617909255600680549286169290911691909117905550436007555f610089601290565b61009490600a6109a3565b6100a290633b9aca006109b8565b905060646100b16002836109b8565b6100bb91906109cf565b6008556100c882826100d2565b5050505050610a1a565b6001600160a01b0382166101005760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b61010b5f838361010f565b5050565b6007544311801561012e5750600560075461012a91906109ee565b4311155b15610421575f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610184573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a89190610a01565b604051630b4c774160e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602482015261271060448201529091505f906001600160a01b03831690631698ee8290606401602060405180830381865afa158015610211573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102359190610a01565b9050806001600160a01b0316856001600160a01b031614801561026657506005546001600160a01b03858116911614155b801561028057506006546001600160a01b03858116911614155b1561032a57325f90815260096020526040812080548592906102a39084906109ee565b90915550506008546064906102b990606e6109b8565b6102c391906109cf565b325f90815260096020526040902054111561032a5760405162461bcd60e51b815260206004820152602160248201527f4b656570696e6720322520706f6f6c204c696d69747320496e204b6f6e74726f6044820152601b60fa1b60648201526084016100f7565b6006546001600160a01b0385811691161480159061035657506005546001600160a01b03858116911614155b80156103745750806001600160a01b0316846001600160a01b031614155b801561038857506001600160a01b03851615155b1561041e57600854836103af866001600160a01b03165f9081526020819052604090205490565b6103b991906109ee565b111561041e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782077616c6c6574206c696d697420657863656564656420647572696e6760448201526d081b185d5b98da081c195c9a5bd960921b60648201526084016100f7565b50505b6007544314801561043a57506001600160a01b03831615155b801561045457506005546001600160a01b03838116911614155b801561046e57506005546001600160a01b03848116911614155b80156104a157506005546001600160a01b03848116911614801561049f57506006546001600160a01b038381169116145b155b156104fa5760405162461bcd60e51b8152602060048201526024808201527f4e6f206275797320616c6c6f77656420647572696e67206c61756e636820626c6044820152636f636b2160e01b60648201526084016100f7565b61050583838361050a565b505050565b6001600160a01b038316610534578060025f82825461052991906109ee565b909155506105a49050565b6001600160a01b0383165f90815260208190526040902054818110156105865760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100f7565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105c0576002805482900390556105de565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062391815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610653575f5ffd5b81516001600160401b0381111561066c5761066c610630565b604051601f8201601f19908116603f011681016001600160401b038111828210171561069a5761069a610630565b6040528181528382016020018510156106b1575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146106e3575f5ffd5b919050565b5f5f5f5f608085870312156106fb575f5ffd5b84516001600160401b03811115610710575f5ffd5b61071c87828801610644565b602087015190955090506001600160401b03811115610739575f5ffd5b61074587828801610644565b935050610754604086016106cd565b9150610762606086016106cd565b905092959194509250565b600181811c9082168061078157607f821691505b60208210810361079f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561050557805f5260205f20601f840160051c810160208510156107ca5750805b601f840160051c820191505b818110156107e9575f81556001016107d6565b5050505050565b81516001600160401b0381111561080957610809610630565b61081d81610817845461076d565b846107a5565b6020601f82116001811461084f575f83156108385750848201515b5f19600385901b1c1916600184901b1784556107e9565b5f84815260208120601f198516915b8281101561087e578785015182556020948501946001909201910161085e565b508482101561089b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156108f9578085048111156108dd576108dd6108aa565b60018416156108eb57908102905b60019390931c9280026108c2565b935093915050565b5f8261090f5750600161099d565b8161091b57505f61099d565b8160018114610931576002811461093b57610957565b600191505061099d565b60ff84111561094c5761094c6108aa565b50506001821b61099d565b5060208310610133831016604e8410600b841016171561097a575081810a61099d565b6109865f1984846108be565b805f1904821115610999576109996108aa565b0290505b92915050565b5f6109b160ff841683610901565b9392505050565b808202811582820484141761099d5761099d6108aa565b5f826109e957634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561099d5761099d6108aa565b5f60208284031215610a11575f5ffd5b6109b1826106cd565b610eb280610a275f395ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80634bde38c81161009e57806395d89b411161006e57806395d89b411461024a578063a9059cbb14610252578063ad5c464814610265578063cbbc94cf14610280578063dd62ed3e146102b2575f5ffd5b80634bde38c8146101e957806370a08231146101fc57806374580e2f1461022457806379cc679014610237575f5ffd5b80631bea83fe116100e45780631bea83fe1461018f57806323b872dd146101aa5780632f4237c0146101bd578063313ce567146101c557806342966c68146101d4575f5ffd5b806302d05d3f1461011557806306fdde0314610145578063095ea7b31461015a57806318160ddd1461017d575b5f5ffd5b600654610128906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61014d6102ea565b60405161013c9190610cab565b61016d610168366004610cf4565b61037a565b604051901515815260200161013c565b6002545b60405190815260200161013c565b61012873c36442b4a4522e871399cd717abdd847ab11fe8881565b61016d6101b8366004610d1e565b610393565b61016d6103b6565b6040516012815260200161013c565b6101e76101e2366004610d5c565b6103ce565b005b600554610128906001600160a01b031681565b61018161020a366004610d73565b6001600160a01b03165f9081526020819052604090205490565b6101e7610232366004610d73565b6103db565b6101e7610245366004610cf4565b61045c565b61014d610475565b61016d610260366004610cf4565b610484565b61012873c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b610288610491565b604080516001600160a01b039485168152928416602084015292169181019190915260600161013c565b6101816102c0366004610d95565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102f990610dcc565b80601f016020809104026020016040519081016040528092919081815260200182805461032590610dcc565b80156103705780601f1061034757610100808354040283529160200191610370565b820191905f5260205f20905b81548152906001019060200180831161035357829003601f168201915b5050505050905090565b5f336103878185856105a3565b60019150505b92915050565b5f336103a08582856105b5565b6103ab858585610631565b506001949350505050565b5f60056007546103c69190610e18565b431115905090565b6103d8338261068e565b50565b6005546001600160a01b0316331461043a5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920706c6174666f726d2063616e206368616e67652063726561746f7260448201526064015b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6104678233836105b5565b610471828261068e565b5050565b6060600480546102f990610dcc565b5f33610387818585610631565b5f5f5f5f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105099190610e2b565b604051630b4c774160e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602482015261271060448201529091505f906001600160a01b03831690631698ee8290606401602060405180830381865afa158015610572573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105969190610e2b565b9530955091935090915050565b6105b083838360016106c2565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981101561062b578181101561061d57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610431565b61062b84848484035f6106c2565b50505050565b6001600160a01b03831661065a57604051634b637e8f60e11b81525f6004820152602401610431565b6001600160a01b0382166106835760405163ec442f0560e01b81525f6004820152602401610431565b6105b0838383610794565b6001600160a01b0382166106b757604051634b637e8f60e11b81525f6004820152602401610431565b610471825f83610794565b6001600160a01b0384166106eb5760405163e602df0560e01b81525f6004820152602401610431565b6001600160a01b03831661071457604051634a1406b160e11b81525f6004820152602401610431565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561062b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078691815260200190565b60405180910390a350505050565b600754431180156107b3575060056007546107af9190610e18565b4311155b15610aa6575f73c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610809573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082d9190610e2b565b604051630b4c774160e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602482015261271060448201529091505f906001600160a01b03831690631698ee8290606401602060405180830381865afa158015610896573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ba9190610e2b565b9050806001600160a01b0316856001600160a01b03161480156108eb57506005546001600160a01b03858116911614155b801561090557506006546001600160a01b03858116911614155b156109af57325f9081526009602052604081208054859290610928908490610e18565b909155505060085460649061093e90606e610e46565b6109489190610e5d565b325f9081526009602052604090205411156109af5760405162461bcd60e51b815260206004820152602160248201527f4b656570696e6720322520706f6f6c204c696d69747320496e204b6f6e74726f6044820152601b60fa1b6064820152608401610431565b6006546001600160a01b038581169116148015906109db57506005546001600160a01b03858116911614155b80156109f95750806001600160a01b0316846001600160a01b031614155b8015610a0d57506001600160a01b03851615155b15610aa35760085483610a34866001600160a01b03165f9081526020819052604090205490565b610a3e9190610e18565b1115610aa35760405162461bcd60e51b815260206004820152602e60248201527f4d61782077616c6c6574206c696d697420657863656564656420647572696e6760448201526d081b185d5b98da081c195c9a5bd960921b6064820152608401610431565b50505b60075443148015610abf57506001600160a01b03831615155b8015610ad957506005546001600160a01b03838116911614155b8015610af357506005546001600160a01b03848116911614155b8015610b2657506005546001600160a01b038481169116148015610b2457506006546001600160a01b038381169116145b155b15610b7f5760405162461bcd60e51b8152602060048201526024808201527f4e6f206275797320616c6c6f77656420647572696e67206c61756e636820626c6044820152636f636b2160e01b6064820152608401610431565b6105b08383836001600160a01b038316610baf578060025f828254610ba49190610e18565b90915550610c1f9050565b6001600160a01b0383165f9081526020819052604090205481811015610c015760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610431565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c3b57600280548290039055610c59565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9e91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103d8575f5ffd5b5f5f60408385031215610d05575f5ffd5b8235610d1081610ce0565b946020939093013593505050565b5f5f5f60608486031215610d30575f5ffd5b8335610d3b81610ce0565b92506020840135610d4b81610ce0565b929592945050506040919091013590565b5f60208284031215610d6c575f5ffd5b5035919050565b5f60208284031215610d83575f5ffd5b8135610d8e81610ce0565b9392505050565b5f5f60408385031215610da6575f5ffd5b8235610db181610ce0565b91506020830135610dc181610ce0565b809150509250929050565b600181811c90821680610de057607f821691505b602082108103610dfe57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561038d5761038d610e04565b5f60208284031215610e3b575f5ffd5b8151610d8e81610ce0565b808202811582820484141761038d5761038d610e04565b5f82610e7757634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122083ac418fbf74c4eb28609e2889bb0c11d3ac3d986f9c5d177211649be3b9516564736f6c634300081e0033a26469706673582212201037f0d656b603cfdb39f1b831e1d236bfa36a250932b3b002b2b7030ed2b41e64736f6c634300081e0033