Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_enterpriseFeeCollector","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ConsumeMarketFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"exchangeOwner","type":"address"}],"name":"ExchangeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"allowedSwapper","type":"address"}],"name":"ExchangeAllowedSwapperChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"baseToken","type":"address"},{"indexed":true,"internalType":"address","name":"datatoken","type":"address"},{"indexed":false,"internalType":"address","name":"exchangeOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"fixedRate","type":"uint256"}],"name":"ExchangeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"exchangeOwner","type":"address"}],"name":"ExchangeDeactivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"exchangeOwner","type":"address"},{"indexed":false,"internalType":"bool","name":"withMint","type":"bool"}],"name":"ExchangeMintStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"exchangeOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"ExchangeRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"feeToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"MarketFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"feeToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"OceanFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"newMarketCollector","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFee","type":"uint256"}],"name":"PublishMarketFeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"oceanFeeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketFeeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"consumeMarketFeeAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"tokenFeeAddress","type":"address"}],"name":"SWAP_FEES","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":false,"internalType":"uint256","name":"baseTokenSwappedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"datatokenSwappedAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"tokenOutAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"marketFeeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oceanFeeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"consumeMarketFeeAmount","type":"uint256"}],"name":"Swapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenCollected","type":"event"},{"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"datatokenAmount","type":"uint256"},{"internalType":"uint256","name":"maxBaseTokenAmount","type":"uint256"},{"internalType":"address","name":"consumeMarketAddress","type":"address"},{"internalType":"uint256","name":"consumeMarketSwapFeeAmount","type":"uint256"}],"name":"buyDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"datatokenAmount","type":"uint256"},{"internalType":"uint256","name":"consumeMarketSwapFeeAmount","type":"uint256"}],"name":"calcBaseInGivenOutDT","outputs":[{"components":[{"internalType":"uint256","name":"baseTokenAmount","type":"uint256"},{"internalType":"uint256","name":"oceanFeeAmount","type":"uint256"},{"internalType":"uint256","name":"publishMarketFeeAmount","type":"uint256"},{"internalType":"uint256","name":"consumeMarketFeeAmount","type":"uint256"}],"internalType":"struct FixedRateExchangeEnterprise.Fees","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"datatokenAmount","type":"uint256"},{"internalType":"uint256","name":"consumeMarketSwapFeeAmount","type":"uint256"}],"name":"calcBaseOutGivenInDT","outputs":[{"components":[{"internalType":"uint256","name":"baseTokenAmount","type":"uint256"},{"internalType":"uint256","name":"oceanFeeAmount","type":"uint256"},{"internalType":"uint256","name":"publishMarketFeeAmount","type":"uint256"},{"internalType":"uint256","name":"consumeMarketFeeAmount","type":"uint256"}],"internalType":"struct FixedRateExchangeEnterprise.Fees","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"collectBT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"collectDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"collectMarketFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"exchangeId","type":"bytes32[]"}],"name":"collectMarketFeeBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"collectOceanFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"exchangeId","type":"bytes32[]"}],"name":"collectOceanFeeBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"datatoken","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"uints","type":"uint256[]"}],"name":"createWithDecimals","outputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enterpriseFeeCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"datatoken","type":"address"}],"name":"generateExchangeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"getAllowedSwapper","outputs":[{"internalType":"address","name":"allowedSwapper","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"getBTSupply","outputs":[{"internalType":"uint256","name":"supply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"getDTSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"getExchange","outputs":[{"internalType":"address","name":"exchangeOwner","type":"address"},{"internalType":"address","name":"datatoken","type":"address"},{"internalType":"uint256","name":"dtDecimals","type":"uint256"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"uint256","name":"btDecimals","type":"uint256"},{"internalType":"uint256","name":"fixedRate","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"dtSupply","type":"uint256"},{"internalType":"uint256","name":"btSupply","type":"uint256"},{"internalType":"uint256","name":"dtBalance","type":"uint256"},{"internalType":"uint256","name":"btBalance","type":"uint256"},{"internalType":"bool","name":"withMint","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getExchanges","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getExchangesInRange","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"getFeesInfo","outputs":[{"internalType":"uint256","name":"marketFee","type":"uint256"},{"internalType":"address","name":"marketFeeCollector","type":"address"},{"internalType":"uint256","name":"opcFee","type":"uint256"},{"internalType":"uint256","name":"marketFeeAvailable","type":"uint256"},{"internalType":"uint256","name":"oceanFeeAvailable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getId","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"getMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfExchanges","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"baseTokenAddress","type":"address"}],"name":"getOPCFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"baseTokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getOPEFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"datatokenAmount","type":"uint256"},{"internalType":"uint256","name":"minBaseTokenAmount","type":"uint256"},{"internalType":"address","name":"consumeMarketAddress","type":"address"},{"internalType":"uint256","name":"consumeMarketSwapFeeAmount","type":"uint256"}],"name":"sellDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"address","name":"newAllowedSwapper","type":"address"}],"name":"setAllowedSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"}],"name":"toggleExchangeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"bool","name":"withMint","type":"bool"}],"name":"toggleMintState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"uint256","name":"_newMarketFee","type":"uint256"}],"name":"updateMarketFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"exchangeId","type":"bytes32"},{"internalType":"address","name":"_newMarketCollector","type":"address"}],"name":"updateMarketFeeCollector","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60c06040523480156200001157600080fd5b50604051620046c8380380620046c88339810160408190526200003491620000d9565b60016000556001600160a01b038216620000a45760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a2057726f6e6720526f75746572206044820152666164647265737360c81b606482015260840160405180910390fd5b6001600160a01b039182166080521660a05262000111565b80516001600160a01b0381168114620000d457600080fd5b919050565b60008060408385031215620000ed57600080fd5b620000f883620000bc565b91506200010860208401620000bc565b90509250929050565b60805160a0516145366200019260003960008181610342015281816114f10152818161154b01528181612196015281816121f1015281816129d601528181612a3501528181612af701528181612ec101528181612f200152612fe201526000818161070101528181610730015281816128d901526131e901526145366000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806376c7a3c711610130578063b8421e2b116100b8578063d819bfef1161007c578063d819bfef146106b7578063dd1bc96a146106c3578063ed2fc859146106d6578063f32f9476146106e9578063f887ea40146106fc57600080fd5b8063b8421e2b14610629578063bc063e1a1461063c578063c2c0d1ab1461064b578063c612e48a14610691578063c66274ea146106a457600080fd5b806385fcbc2f116100ff57806385fcbc2f146105c557806388823872146105d8578063b32b56f9146105eb578063b42414291461060e578063b686bcaf1461061657600080fd5b806376c7a3c7146104b157806379dd2836146104b95780637c82ebe9146104cc578063855058dd146104df57600080fd5b806349b69e33116101be5780635d1ca631116101825780635d1ca6311461045657806360311e9514610465578063680819eb1461047857806368c4b7e91461048b578063730523e51461049e57600080fd5b806349b69e331461037c5780634c87087d1461038f57806350d571d51461040d5780635acfedc7146104205780635c36901c1461043357600080fd5b806324cb477e1161020557806324cb477e146102df5780632d24deff146102f45780632e7e23b3146103075780633b7008fb1461032a57806347f1bc4b1461033d57600080fd5b8063012c3275146102375780630b3b430d1461025d57806316279055146102a05780631e2e3a6b146102ca575b600080fd5b61024a610245366004613d8a565b610723565b6040519081526020015b60405180910390f35b61027061026b366004613e60565b6110f0565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a001610254565b6102ba6102ae366004613e79565b3b63ffffffff16151590565b6040519015158152602001610254565b6102d26111fa565b6040516102549190613e96565b6102f26102ed366004613e60565b611252565b005b6102f2610302366004613eda565b611498565b61024a610315366004613e60565b60009081526001602052604090206008015490565b61024a610338366004613f4f565b6114ed565b6103647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610254565b6102f261038a366004613eda565b6115bf565b6103a261039d366004613e60565b611605565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e085015261010084015261012083015261014082019290925290151561016082015261018001610254565b6102f261041b366004613f7b565b6116aa565b6102f261042e366004613e60565b61173e565b6102ba610441366004613e60565b60009081526001602052604090205460ff1690565b60405160038152602001610254565b6102f2610473366004613fc4565b61175c565b6102f2610486366004613ff4565b611960565b6102f2610499366004613f7b565b611b7b565b6102d26104ac366004613ff4565b61229f565b61024a612406565b6102f26104c7366004614024565b61241d565b6102f26104da366004613fc4565b61263a565b6103646104ed366004613e60565b60009081526001602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095529483015484169582019590955260028201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015485820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015492831615156101a082015292909104166101c090910181905290565b61024a6105d3366004613e60565b61270d565b6102f26105e6366004613ff4565b612741565b61024a6105f9366004613e60565b60009081526001602052604090206003015490565b60025461024a565b6102f2610624366004613e60565b6128a6565b61024a610637366004613e79565b6128b7565b61024a6706f05b59d3b2000081565b61065e610659366004614049565b612946565b60405161025491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b6102f261069f366004613ff4565b612c31565b61024a6106b2366004613e60565b612c4d565b61024a6402540be40081565b61065e6106d1366004614049565b612e31565b61024a6106e4366004614075565b613110565b6102f26106f7366004613ff4565b613148565b6103647f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a25760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b6005825110156107eb5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840ead2dce8e640d8cadccee8d60631b6044820152606401610799565b60048351101561083d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420616464726573736573206c656e67746800000000000000006044820152606401610799565b60006001600160a01b03168360008151811061085b5761085b6140a3565b60200260200101516001600160a01b031614156108d65760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b610901836000815181106108ec576108ec6140a3565b602002602001015163ffffffff903b16151590565b6109655760405162461bcd60e51b815260206004820152602f60248201527f46697865645261746545786368616e67653a20496e76616c696420626173655460448201526e6f6b656e2c206c6f6f6b7320454f4160881b6064820152608401610799565b6001600160a01b0384166109d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b836001600160a01b0316836000815181106109f4576109f46140a3565b60200260200101516001600160a01b03161415610a795760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610799565b6402540be40082600281518110610a9257610a926140a3565b60200260200101511015610ab85760405162461bcd60e51b8152600401610799906140b9565b610adc83600081518110610ace57610ace6140a3565b602002602001015185613110565b60008181526001602052604090206003015490915015610b525760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610799565b60006001905082600481518110610b6b57610b6b6140a3565b602002602001015160001415610b7f575060005b604051806101e0016040528060011515815260200185600181518110610ba757610ba76140a3565b60200260200101516001600160a01b03168152602001866001600160a01b0316815260200185600081518110610bdf57610bdf6140a3565b60200260200101516001600160a01b0316815260200184600281518110610c0857610c086140a3565b6020026020010151815260200184600181518110610c2857610c286140a3565b6020026020010151815260200184600081518110610c4857610c486140a3565b60200260200101518152602001600081526020016000815260200184600381518110610c7657610c766140a3565b6020026020010151815260200185600281518110610c9657610c966140a3565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610cd557610cd56140a3565b6020908102919091018101516001600160a01b039081169092526000858152600180835260409182902085518154948701518616610100908102610100600160a81b031992151583166001600160a81b0319978816171783559387015192820180549387166001600160a01b03199485161790556060870151600283018054918816918516919091179055608087015160038084019190915560a0880151600484015560c0880151600584015560e0880151600684015584880151600784015561012088015160088401556101408801516009840180549189169190951617909355610160870151600a830155610180870151600b8301556101a0870151600c90920180546101c090980151909616909302901515909216949092169390931792909217905583518491908110610e0e57610e0e6140a3565b602002602001015160001480610e515750610e33612710670de0b6b3a764000061411d565b83600381518110610e4657610e466140a3565b602002602001015110155b610e8f5760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b2000083600381518110610eab57610eab6140a3565b60200260200101511115610ef45760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0183905584516001600160a01b038716918691610f4357610f436140a3565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610f8957610f896140a3565b602002602001015187600281518110610fa457610fa46140a3565b6020026020010151604051610fce9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610fe957610fe96140a3565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a38360038151811061103a5761103a6140a3565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3817f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5233866002815181106110ae576110ae6140a3565b6020026020010151866003815181106110c9576110c96140a3565b60200260200101516040516110e09392919061413f565b60405180910390a2509392505050565b600081815260016020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015284880154811695840195909552600284015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c08301528787529490935292939182918291906111de906128b7565b9350806101600151925080610180015191505091939590929450565b6060600280548060200260200160405190810160405280929190818152602001828054801561124857602002820191906000526020600020905b815481526020019060010190808311611234575b5050505050905090565b600081815260016020819052604090912090810154905482916001600160a01b03908116916101009004163314806112ed57506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190614163565b806113d45750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135e9190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c99190614180565b6001600160a01b0316145b6113f05760405162461bcd60e51b81526004016107999061419d565b60008381526001602052604090205460ff161561144c57600083815260016020526040808220805460ff1916905551339185917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a3505050565b6000838152600160208190526040808320805460ff191690921790915551339185917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35b505050565b6114a061315a565b60005b818110156114de576114cc8383838181106114c0576114c06140a3565b905060200201356131b4565b806114d6816141e6565b9150506114a3565b506114e96001600055565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611525575060006115b9565b604051634594558f60e11b81526001600160a01b038481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690638b28ab1e90604401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b69190614201565b90505b92915050565b6115c761315a565b60005b818110156114de576115f38383838181106115e7576115e76140a3565b905060200201356132ce565b806115fd816141e6565b9150506115ca565b600081815260016020819052604082208054918101546004820154600283015460058401546003909401546001600160a01b0361010087048116979481169693959216939192909160ff90911690808080806116608d612c4d565b945061166b8d61270d565b60009d8e5260016020526040909d2060068101546007820154600c909201549d9f9c9e9b9d9a9c999b989a9799969897909691955060ff169350915050565b600085815260016020526040902054859060ff166116da5760405162461bcd60e51b81526004016107999061421a565b6116e261315a565b60405162461bcd60e51b8152602060048201526024808201527f73656c6c4454206973206e6f7420616c6c6f77656420666f7220656e746572706044820152637269736560e01b6064820152608401610799565b505050505050565b61174661315a565b61174f816131b4565b6117596001600055565b50565b600082815260016020819052604090912090810154905483916001600160a01b03908116916101009004163314806117f757506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa1580156117d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f79190614163565b806118de5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118689190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa1580156118af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d39190614180565b6001600160a01b0316145b6118fa5760405162461bcd60e51b81526004016107999061419d565b600084815260016020526040808220600c018054610100600160a81b0319166101006001600160a01b038816908102919091179091559051909186917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a350505050565b600082815260016020819052604090912090810154905483916001600160a01b03908116916101009004163314806119fb57506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb9190614163565b80611ae25750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c9190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190614180565b6001600160a01b0316145b611afe5760405162461bcd60e51b81526004016107999061419d565b6402540be400831015611b235760405162461bcd60e51b8152600401610799906140b9565b6000848152600160205260409081902060030184905551339085907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c90611b6d9087815260200190565b60405180910390a350505050565b600085815260016020526040902054859060ff16611bab5760405162461bcd60e51b81526004016107999061421a565b611bb361315a565b84611c115760405162461bcd60e51b815260206004820152602860248201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656044820152671b88185b5bdd5b9d60c21b6064820152608401610799565b811580611c315750611c2d612710670de0b6b3a764000061411d565b8210155b611c765760405162461bcd60e51b8152602060048201526016602482015275436f6e73756d655377617046656520746f6f206c6f7760501b6044820152606401610799565b6706f05b59d3b20000821115611cce5760405162461bcd60e51b815260206004820152601760248201527f436f6e73756d655377617046656520746f6f20686967680000000000000000006044820152606401610799565b6000868152600160205260409020600c015461010090046001600160a01b031615611d80576000868152600160205260409020600c015461010090046001600160a01b03163314611d805760405162461bcd60e51b815260206004820152603660248201527f46697865645261746545786368616e67653a205468697320616464726573732060448201527506973206e6f7420616c6c6f77656420746f20737761760541b6064820152608401610799565b6001600160a01b038316611d9357600091505b6000611da0878785612e31565b90508481600001511115611e065760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610799565b6040808201516000898152600160205291909120600a0154611e279161335a565b6000888152600160205260409020600a810191909155600201548151611e5a916001600160a01b03169033903090613366565b6000611e8d8260600151611e878460400151611e87866020015187600001516134b490919063ffffffff16565b906134b4565b600089815260016020526040902060070154909150611eac908261335a565b600089815260016020526040902060078101919091556006015487111561208b576000888152600160205260409020600c015460ff168015611f655750600088815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190614163565b1561203057600088815260016020526040812060060154611f879089906134b4565b60008a815260016020819052604091829020015490516340c10f1960e01b8152306004820152602481018390529192506001600160a01b0316906340c10f1990604401600060405180830381600087803b158015611fe457600080fd5b505af1158015611ff8573d6000803e3d6000fd5b50505060008a81526001602052604090206006015461201891508261335a565b60008a8152600160205260409020600601555061208b565b60405162461bcd60e51b815260206004820152602a60248201527f46697865645261746545786368616e67653a204e6f20617661696c61626c652060448201526964617461746f6b656e7360b01b6064820152608401610799565b6000888152600160205260409020600601546120a790886134b4565b6000898152600160208190526040909120600681019290925501546120d6906001600160a01b031633896134c0565b6001600160a01b038516158015906120f2575060008260600151115b15612185576060820151600089815260016020526040902060020154612125916001600160a01b039091169087906134c0565b6000888152600160205260409081902060020154606084015191518a927f086a8edf7ac99098be3ce56ba76ae3e5a1e212fed5f803fc3167990fa03079b99261217c928a926001600160a01b03909216919061413f565b60405180910390a25b600082602001511180156121c157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b156122165760208083015160008a81526001909252604090912060020154612216916001600160a01b03909116907f0000000000000000000000000000000000000000000000000000000000000000906134c0565b815160008981526001602081815260409283902090910154828601518287015160608089015186519788529487018e90526001600160a01b039093168686015291850152608084015260a08301525133918a917f7b072645ce5b6a2fc627a544edee544b786747cafd1bb8f0e3238aa5f2e806469181900360c00190a350506117366001600055565b60608282116123015760405162461bcd60e51b815260206004820152602860248201527f656e64496e646578206d7573742062652067726561746572207468616e2073746044820152670c2e4e892dcc8caf60c31b6064820152608401610799565b60025482111561234c5760405162461bcd60e51b8152602060048201526016602482015275656e64496e646578206f7574206f6620626f756e647360501b6044820152606401610799565b60006123588484614265565b67ffffffffffffffff81111561237057612370613cb4565b604051908082528060200260200182016040528015612399578160200160208202803683370190505b509050835b838110156123fe57600281815481106123b9576123b96140a3565b90600052602060002001548286836123d19190614265565b815181106123e1576123e16140a3565b6020908102919091010152806123f6816141e6565b91505061239e565b509392505050565b61241a612710670de0b6b3a764000061411d565b81565b600082815260016020819052604090912090810154905483916001600160a01b03908116916101009004163314806124b857506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190614163565b8061259f5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125299190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190614180565b6001600160a01b0316145b6125bb5760405162461bcd60e51b81526004016107999061419d565b600084815260016020819052604090912001546125e39033906001600160a01b031685613523565b600085815260016020908152604091829020600c01805460ff191693151593909317909255518415158152339186917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611b6d565b6000828152600160205260409020600901546001600160a01b0316331461269c5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b600082815260016020526040908190206009810180546001600160a01b0319166001600160a01b03851617905560080154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d529161270191339186919061413f565b60405180910390a25050565b60008181526001602052604081205460ff1661272b57506000919050565b5060009081526001602052604090206007015490565b6000828152600160205260409020600901546001600160a01b031633146127a35760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b8015806127c357506127bf612710670de0b6b3a764000061411d565b8110155b6128015760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b2000081111561284c5760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b600082815260016020526040908190206008810183905560090154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d52916127019133916001600160a01b0390911690869061413f565b6128ae61315a565b61174f816132ce565b60405163b8421e2b60e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063b8421e2b90602401602060405180830381865afa158015612922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190614201565b6129716040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff166129a15760405162461bcd60e51b81526004016107999061421a565b60006129ad86866136bb565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615612b6e576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f9eaee0d90602401602060405180830381865afa158015612a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa29190614163565b612abe5760405162461bcd60e51b81526004016107999061427c565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911690638b28ab1e90604401602060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b649190614201565b6020820152612b76565b600060208201525b60008781526001602052604090206008015415612bc857600087815260016020526040902060080154612bbe90670de0b6b3a764000090612bb890859061372a565b90613736565b6040820152612bd0565b600060408201525b8415612bf657612bec670de0b6b3a7640000612bb8848861372a565b6060820152612bfe565b600060608201525b612c258160600151611e878360200151611e878560400151876134b490919063ffffffff16565b81529695505050505050565b612c3961315a565b612c438282613742565b6114e96001600055565b600081815260016020526040812054819060ff16612c6e5750600092915050565b6000838152600160205260409020600c015460ff168015612d065750600083815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015612ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d069190614163565b15612e0e576000838152600160208181526040928390209091015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa158015612d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d869190614201565b600084815260016020818152604092839020909101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015612ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e019190614201565b612e0b9190614265565b90505b600083815260016020526040902060060154612e2a90826142d9565b9392505050565b612e5c6040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff16612e8c5760405162461bcd60e51b81526004016107999061421a565b6000612e9886866136bb565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615613059576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f9eaee0d90602401602060405180830381865afa158015612f69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8d9190614163565b612fa95760405162461bcd60e51b81526004016107999061427c565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911690638b28ab1e90604401602060405180830381865afa15801561302b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304f9190614201565b6020820152613061565b600060208201525b600087815260016020526040902060080154156130ad576000878152600160205260409020600801546130a390670de0b6b3a764000090612bb890859061372a565b60408201526130b5565b600060408201525b84156130db576130d1670de0b6b3a7640000612bb8848861372a565b60608201526130e3565b600060608201525b612c25816060015161310a836020015161310a85604001518761335a90919063ffffffff16565b9061335a565b604080516001600160a01b03938416602080830191909152929093168382015280518084038201815260609093019052815191012090565b61315061315a565b612c4382826138b4565b600260005414156131ad5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610799565b6002600055565b6000818152600160209081526040808320600b0180549390558051631a81876d60e01b81529051613276926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631a81876d92600480830193928290030181865afa158015613230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132549190614180565b6000848152600160205260409020600201546001600160a01b031690836134c0565b6000828152600160209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf910160405180910390a35050565b6000818152600160209081526040808320600a810180549490556002015490518381526001600160a01b039091169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910160405180910390a3600082815260016020526040902060098101546002909101546114e9916001600160a01b039182169116836134c0565b60006115b682846142d9565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908616906370a0823190602401602060405180830381865afa1580156133b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d49190614201565b90506133eb6001600160a01b038616858585613a2e565b6133f5818361335a565b6040516370a0823160e01b81526001600160a01b0385811660048301528716906370a0823190602401602060405180830381865afa15801561343b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345f9190614201565b10156134ad5760405162461bcd60e51b815260206004820152601a60248201527f5472616e7366657220616d6f756e7420697320746f6f206c6f770000000000006044820152606401610799565b5050505050565b60006115b68284614265565b6040516001600160a01b03831660248201526044810182905261149390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613a55565b60008161353257506000612e2a565b6000836001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015613571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135959190614180565b60405163160a792560e01b81526001600160a01b03878116600483015291925060009183169063160a792590602401608060405180830381865afa1580156135e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360591906142f1565b80519091501515600114806136205750602081015115156001145b8061369f57506040516331a9108f60e11b8152600160048201526001600160a01b038088169190841690636352211e90602401602060405180830381865afa158015613670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136949190614180565b6001600160a01b0316145b156136af57600192505050612e2a565b50600095945050505050565b6000828152600160205260408120600401546115b690670de0b6b3a764000090612bb8906136ea90600a61445a565b600087815260016020526040902060050154612bb89061370b90600a61445a565b60008981526001602052604090206003015461372890899061372a565b905b60006115b68284614466565b60006115b6828461411d565b6000828152600160205260409020600601548111156137955760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa1580156137eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380f9190614180565b60008481526001602052604090206006015490915061382e90836134b4565b600084815260016020818152604092839020600681019490945592015490518481526001600160a01b03918216929184169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910160405180910390a460008381526001602081905260409091200154611493906001600160a01b031682846134c0565b6000828152600160205260409020600701548111156139075760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa15801561395d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139819190614180565b6000848152600160205260409020600701549091506139a090836134b4565b60008481526001602052604090819020600781019290925560029091015490516001600160a01b039182169183169085907fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163690613a009087815260200190565b60405180910390a4600083815260016020526040902060020154611493906001600160a01b031682846134c0565b613a4f846323b872dd60e01b8585856040516024016134ec9392919061413f565b50505050565b6000613aaa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b279092919063ffffffff16565b8051909150156114935780806020019051810190613ac89190614163565b6114935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610799565b6060613b368484600085613b3e565b949350505050565b606082471015613b9f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610799565b843b613bed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610799565b600080866001600160a01b03168587604051613c0991906144b1565b60006040518083038185875af1925050503d8060008114613c46576040519150601f19603f3d011682016040523d82523d6000602084013e613c4b565b606091505b5091509150613c5b828286613c66565b979650505050505050565b60608315613c75575081612e2a565b825115613c855782518084602001fd5b8160405162461bcd60e51b815260040161079991906144cd565b6001600160a01b038116811461175957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613cf357613cf3613cb4565b604052919050565b600067ffffffffffffffff821115613d1557613d15613cb4565b5060051b60200190565b600082601f830112613d3057600080fd5b81356020613d45613d4083613cfb565b613cca565b82815260059290921b84018101918181019086841115613d6457600080fd5b8286015b84811015613d7f5780358352918301918301613d68565b509695505050505050565b600080600060608486031215613d9f57600080fd5b8335613daa81613c9f565b925060208481013567ffffffffffffffff80821115613dc857600080fd5b818701915087601f830112613ddc57600080fd5b8135613dea613d4082613cfb565b81815260059190911b8301840190848101908a831115613e0957600080fd5b938501935b82851015613e30578435613e2181613c9f565b82529385019390850190613e0e565b965050506040870135925080831115613e4857600080fd5b5050613e5686828701613d1f565b9150509250925092565b600060208284031215613e7257600080fd5b5035919050565b600060208284031215613e8b57600080fd5b8135612e2a81613c9f565b6020808252825182820181905260009190848201906040850190845b81811015613ece57835183529284019291840191600101613eb2565b50909695505050505050565b60008060208385031215613eed57600080fd5b823567ffffffffffffffff80821115613f0557600080fd5b818501915085601f830112613f1957600080fd5b813581811115613f2857600080fd5b8660208260051b8501011115613f3d57600080fd5b60209290920196919550909350505050565b60008060408385031215613f6257600080fd5b8235613f6d81613c9f565b946020939093013593505050565b600080600080600060a08688031215613f9357600080fd5b8535945060208601359350604086013592506060860135613fb381613c9f565b949793965091946080013592915050565b60008060408385031215613fd757600080fd5b823591506020830135613fe981613c9f565b809150509250929050565b6000806040838503121561400757600080fd5b50508035926020909101359150565b801515811461175957600080fd5b6000806040838503121561403757600080fd5b823591506020830135613fe981614016565b60008060006060848603121561405e57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561408857600080fd5b823561409381613c9f565b91506020830135613fe981613c9f565b634e487b7160e01b600052603260045260246000fd5b6020808252602e908201527f46697865645261746545786368616e67653a20496e76616c696420657863686160408201526d6e676520726174652076616c756560901b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008261413a57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561417557600080fd5b8151612e2a81614016565b60006020828403121561419257600080fd5b8151612e2a81613c9f565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b60006000198214156141fa576141fa614107565b5060010190565b60006020828403121561421357600080fd5b5051919050565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60008282101561427757614277614107565b500390565b60208082526039908201527f546869732062617365546f6b656e206973206e6f7420616c6c6f77656420627960408201527f20656e74657270726973652066656520636f6c6c6563746f7200000000000000606082015260800190565b600082198211156142ec576142ec614107565b500190565b60006080828403121561430357600080fd5b6040516080810181811067ffffffffffffffff8211171561432657614326613cb4565b604052825161433481614016565b8152602083015161434481614016565b6020820152604083015161435781614016565b6040820152606083015161436a81614016565b60608201529392505050565b600181815b808511156143b157816000190482111561439757614397614107565b808516156143a457918102915b93841c939080029061437b565b509250929050565b6000826143c8575060016115b9565b816143d5575060006115b9565b81600181146143eb57600281146143f557614411565b60019150506115b9565b60ff84111561440657614406614107565b50506001821b6115b9565b5060208310610133831016604e8410600b8410161715614434575081810a6115b9565b61443e8383614376565b806000190482111561445257614452614107565b029392505050565b60006115b683836143b9565b600081600019048311821515161561448057614480614107565b500290565b60005b838110156144a0578181015183820152602001614488565b83811115613a4f5750506000910152565b600082516144c3818460208701614485565b9190910192915050565b60208152600082518060208401526144ec816040850160208701614485565b601f01601f1916919091016040019291505056fea26469706673582212209f0383b1876e6c0d1a7a99f0c9937601146a8934144382e2a3b3df0504788f2364736f6c634300080c00330000000000000000000000008149276f275eefac110d74afe8afeceaec7d1593000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd7
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102325760003560e01c806376c7a3c711610130578063b8421e2b116100b8578063d819bfef1161007c578063d819bfef146106b7578063dd1bc96a146106c3578063ed2fc859146106d6578063f32f9476146106e9578063f887ea40146106fc57600080fd5b8063b8421e2b14610629578063bc063e1a1461063c578063c2c0d1ab1461064b578063c612e48a14610691578063c66274ea146106a457600080fd5b806385fcbc2f116100ff57806385fcbc2f146105c557806388823872146105d8578063b32b56f9146105eb578063b42414291461060e578063b686bcaf1461061657600080fd5b806376c7a3c7146104b157806379dd2836146104b95780637c82ebe9146104cc578063855058dd146104df57600080fd5b806349b69e33116101be5780635d1ca631116101825780635d1ca6311461045657806360311e9514610465578063680819eb1461047857806368c4b7e91461048b578063730523e51461049e57600080fd5b806349b69e331461037c5780634c87087d1461038f57806350d571d51461040d5780635acfedc7146104205780635c36901c1461043357600080fd5b806324cb477e1161020557806324cb477e146102df5780632d24deff146102f45780632e7e23b3146103075780633b7008fb1461032a57806347f1bc4b1461033d57600080fd5b8063012c3275146102375780630b3b430d1461025d57806316279055146102a05780631e2e3a6b146102ca575b600080fd5b61024a610245366004613d8a565b610723565b6040519081526020015b60405180910390f35b61027061026b366004613e60565b6110f0565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a001610254565b6102ba6102ae366004613e79565b3b63ffffffff16151590565b6040519015158152602001610254565b6102d26111fa565b6040516102549190613e96565b6102f26102ed366004613e60565b611252565b005b6102f2610302366004613eda565b611498565b61024a610315366004613e60565b60009081526001602052604090206008015490565b61024a610338366004613f4f565b6114ed565b6103647f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd781565b6040516001600160a01b039091168152602001610254565b6102f261038a366004613eda565b6115bf565b6103a261039d366004613e60565b611605565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e085015261010084015261012083015261014082019290925290151561016082015261018001610254565b6102f261041b366004613f7b565b6116aa565b6102f261042e366004613e60565b61173e565b6102ba610441366004613e60565b60009081526001602052604090205460ff1690565b60405160038152602001610254565b6102f2610473366004613fc4565b61175c565b6102f2610486366004613ff4565b611960565b6102f2610499366004613f7b565b611b7b565b6102d26104ac366004613ff4565b61229f565b61024a612406565b6102f26104c7366004614024565b61241d565b6102f26104da366004613fc4565b61263a565b6103646104ed366004613e60565b60009081526001602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095529483015484169582019590955260028201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015485820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015492831615156101a082015292909104166101c090910181905290565b61024a6105d3366004613e60565b61270d565b6102f26105e6366004613ff4565b612741565b61024a6105f9366004613e60565b60009081526001602052604090206003015490565b60025461024a565b6102f2610624366004613e60565b6128a6565b61024a610637366004613e79565b6128b7565b61024a6706f05b59d3b2000081565b61065e610659366004614049565b612946565b60405161025491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b6102f261069f366004613ff4565b612c31565b61024a6106b2366004613e60565b612c4d565b61024a6402540be40081565b61065e6106d1366004614049565b612e31565b61024a6106e4366004614075565b613110565b6102f26106f7366004613ff4565b613148565b6103647f0000000000000000000000008149276f275eefac110d74afe8afeceaec7d159381565b6000336001600160a01b037f0000000000000000000000008149276f275eefac110d74afe8afeceaec7d159316146107a25760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b6005825110156107eb5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840ead2dce8e640d8cadccee8d60631b6044820152606401610799565b60048351101561083d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420616464726573736573206c656e67746800000000000000006044820152606401610799565b60006001600160a01b03168360008151811061085b5761085b6140a3565b60200260200101516001600160a01b031614156108d65760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b610901836000815181106108ec576108ec6140a3565b602002602001015163ffffffff903b16151590565b6109655760405162461bcd60e51b815260206004820152602f60248201527f46697865645261746545786368616e67653a20496e76616c696420626173655460448201526e6f6b656e2c206c6f6f6b7320454f4160881b6064820152608401610799565b6001600160a01b0384166109d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b836001600160a01b0316836000815181106109f4576109f46140a3565b60200260200101516001600160a01b03161415610a795760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610799565b6402540be40082600281518110610a9257610a926140a3565b60200260200101511015610ab85760405162461bcd60e51b8152600401610799906140b9565b610adc83600081518110610ace57610ace6140a3565b602002602001015185613110565b60008181526001602052604090206003015490915015610b525760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610799565b60006001905082600481518110610b6b57610b6b6140a3565b602002602001015160001415610b7f575060005b604051806101e0016040528060011515815260200185600181518110610ba757610ba76140a3565b60200260200101516001600160a01b03168152602001866001600160a01b0316815260200185600081518110610bdf57610bdf6140a3565b60200260200101516001600160a01b0316815260200184600281518110610c0857610c086140a3565b6020026020010151815260200184600181518110610c2857610c286140a3565b6020026020010151815260200184600081518110610c4857610c486140a3565b60200260200101518152602001600081526020016000815260200184600381518110610c7657610c766140a3565b6020026020010151815260200185600281518110610c9657610c966140a3565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610cd557610cd56140a3565b6020908102919091018101516001600160a01b039081169092526000858152600180835260409182902085518154948701518616610100908102610100600160a81b031992151583166001600160a81b0319978816171783559387015192820180549387166001600160a01b03199485161790556060870151600283018054918816918516919091179055608087015160038084019190915560a0880151600484015560c0880151600584015560e0880151600684015584880151600784015561012088015160088401556101408801516009840180549189169190951617909355610160870151600a830155610180870151600b8301556101a0870151600c90920180546101c090980151909616909302901515909216949092169390931792909217905583518491908110610e0e57610e0e6140a3565b602002602001015160001480610e515750610e33612710670de0b6b3a764000061411d565b83600381518110610e4657610e466140a3565b602002602001015110155b610e8f5760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b2000083600381518110610eab57610eab6140a3565b60200260200101511115610ef45760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0183905584516001600160a01b038716918691610f4357610f436140a3565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610f8957610f896140a3565b602002602001015187600281518110610fa457610fa46140a3565b6020026020010151604051610fce9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610fe957610fe96140a3565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a38360038151811061103a5761103a6140a3565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3817f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5233866002815181106110ae576110ae6140a3565b6020026020010151866003815181106110c9576110c96140a3565b60200260200101516040516110e09392919061413f565b60405180910390a2509392505050565b600081815260016020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015284880154811695840195909552600284015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c08301528787529490935292939182918291906111de906128b7565b9350806101600151925080610180015191505091939590929450565b6060600280548060200260200160405190810160405280929190818152602001828054801561124857602002820191906000526020600020905b815481526020019060010190808311611234575b5050505050905090565b600081815260016020819052604090912090810154905482916001600160a01b03908116916101009004163314806112ed57506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190614163565b806113d45750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135e9190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c99190614180565b6001600160a01b0316145b6113f05760405162461bcd60e51b81526004016107999061419d565b60008381526001602052604090205460ff161561144c57600083815260016020526040808220805460ff1916905551339185917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a3505050565b6000838152600160208190526040808320805460ff191690921790915551339185917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35b505050565b6114a061315a565b60005b818110156114de576114cc8383838181106114c0576114c06140a3565b905060200201356131b4565b806114d6816141e6565b9150506114a3565b506114e96001600055565b5050565b60007f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd76001600160a01b0316611525575060006115b9565b604051634594558f60e11b81526001600160a01b038481166004830152602482018490527f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd71690638b28ab1e90604401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b69190614201565b90505b92915050565b6115c761315a565b60005b818110156114de576115f38383838181106115e7576115e76140a3565b905060200201356132ce565b806115fd816141e6565b9150506115ca565b600081815260016020819052604082208054918101546004820154600283015460058401546003909401546001600160a01b0361010087048116979481169693959216939192909160ff90911690808080806116608d612c4d565b945061166b8d61270d565b60009d8e5260016020526040909d2060068101546007820154600c909201549d9f9c9e9b9d9a9c999b989a9799969897909691955060ff169350915050565b600085815260016020526040902054859060ff166116da5760405162461bcd60e51b81526004016107999061421a565b6116e261315a565b60405162461bcd60e51b8152602060048201526024808201527f73656c6c4454206973206e6f7420616c6c6f77656420666f7220656e746572706044820152637269736560e01b6064820152608401610799565b505050505050565b61174661315a565b61174f816131b4565b6117596001600055565b50565b600082815260016020819052604090912090810154905483916001600160a01b03908116916101009004163314806117f757506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa1580156117d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f79190614163565b806118de5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118689190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa1580156118af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d39190614180565b6001600160a01b0316145b6118fa5760405162461bcd60e51b81526004016107999061419d565b600084815260016020526040808220600c018054610100600160a81b0319166101006001600160a01b038816908102919091179091559051909186917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a350505050565b600082815260016020819052604090912090810154905483916001600160a01b03908116916101009004163314806119fb57506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb9190614163565b80611ae25750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c9190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190614180565b6001600160a01b0316145b611afe5760405162461bcd60e51b81526004016107999061419d565b6402540be400831015611b235760405162461bcd60e51b8152600401610799906140b9565b6000848152600160205260409081902060030184905551339085907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c90611b6d9087815260200190565b60405180910390a350505050565b600085815260016020526040902054859060ff16611bab5760405162461bcd60e51b81526004016107999061421a565b611bb361315a565b84611c115760405162461bcd60e51b815260206004820152602860248201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656044820152671b88185b5bdd5b9d60c21b6064820152608401610799565b811580611c315750611c2d612710670de0b6b3a764000061411d565b8210155b611c765760405162461bcd60e51b8152602060048201526016602482015275436f6e73756d655377617046656520746f6f206c6f7760501b6044820152606401610799565b6706f05b59d3b20000821115611cce5760405162461bcd60e51b815260206004820152601760248201527f436f6e73756d655377617046656520746f6f20686967680000000000000000006044820152606401610799565b6000868152600160205260409020600c015461010090046001600160a01b031615611d80576000868152600160205260409020600c015461010090046001600160a01b03163314611d805760405162461bcd60e51b815260206004820152603660248201527f46697865645261746545786368616e67653a205468697320616464726573732060448201527506973206e6f7420616c6c6f77656420746f20737761760541b6064820152608401610799565b6001600160a01b038316611d9357600091505b6000611da0878785612e31565b90508481600001511115611e065760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610799565b6040808201516000898152600160205291909120600a0154611e279161335a565b6000888152600160205260409020600a810191909155600201548151611e5a916001600160a01b03169033903090613366565b6000611e8d8260600151611e878460400151611e87866020015187600001516134b490919063ffffffff16565b906134b4565b600089815260016020526040902060070154909150611eac908261335a565b600089815260016020526040902060078101919091556006015487111561208b576000888152600160205260409020600c015460ff168015611f655750600088815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190614163565b1561203057600088815260016020526040812060060154611f879089906134b4565b60008a815260016020819052604091829020015490516340c10f1960e01b8152306004820152602481018390529192506001600160a01b0316906340c10f1990604401600060405180830381600087803b158015611fe457600080fd5b505af1158015611ff8573d6000803e3d6000fd5b50505060008a81526001602052604090206006015461201891508261335a565b60008a8152600160205260409020600601555061208b565b60405162461bcd60e51b815260206004820152602a60248201527f46697865645261746545786368616e67653a204e6f20617661696c61626c652060448201526964617461746f6b656e7360b01b6064820152608401610799565b6000888152600160205260409020600601546120a790886134b4565b6000898152600160208190526040909120600681019290925501546120d6906001600160a01b031633896134c0565b6001600160a01b038516158015906120f2575060008260600151115b15612185576060820151600089815260016020526040902060020154612125916001600160a01b039091169087906134c0565b6000888152600160205260409081902060020154606084015191518a927f086a8edf7ac99098be3ce56ba76ae3e5a1e212fed5f803fc3167990fa03079b99261217c928a926001600160a01b03909216919061413f565b60405180910390a25b600082602001511180156121c157507f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd76001600160a01b031615155b156122165760208083015160008a81526001909252604090912060020154612216916001600160a01b03909116907f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd7906134c0565b815160008981526001602081815260409283902090910154828601518287015160608089015186519788529487018e90526001600160a01b039093168686015291850152608084015260a08301525133918a917f7b072645ce5b6a2fc627a544edee544b786747cafd1bb8f0e3238aa5f2e806469181900360c00190a350506117366001600055565b60608282116123015760405162461bcd60e51b815260206004820152602860248201527f656e64496e646578206d7573742062652067726561746572207468616e2073746044820152670c2e4e892dcc8caf60c31b6064820152608401610799565b60025482111561234c5760405162461bcd60e51b8152602060048201526016602482015275656e64496e646578206f7574206f6620626f756e647360501b6044820152606401610799565b60006123588484614265565b67ffffffffffffffff81111561237057612370613cb4565b604051908082528060200260200182016040528015612399578160200160208202803683370190505b509050835b838110156123fe57600281815481106123b9576123b96140a3565b90600052602060002001548286836123d19190614265565b815181106123e1576123e16140a3565b6020908102919091010152806123f6816141e6565b91505061239e565b509392505050565b61241a612710670de0b6b3a764000061411d565b81565b600082815260016020819052604090912090810154905483916001600160a01b03908116916101009004163314806124b857506040516396fb3eaf60e01b81523360048201526001600160a01b038216906396fb3eaf90602401602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190614163565b8061259f5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125299190614180565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190614180565b6001600160a01b0316145b6125bb5760405162461bcd60e51b81526004016107999061419d565b600084815260016020819052604090912001546125e39033906001600160a01b031685613523565b600085815260016020908152604091829020600c01805460ff191693151593909317909255518415158152339186917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611b6d565b6000828152600160205260409020600901546001600160a01b0316331461269c5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b600082815260016020526040908190206009810180546001600160a01b0319166001600160a01b03851617905560080154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d529161270191339186919061413f565b60405180910390a25050565b60008181526001602052604081205460ff1661272b57506000919050565b5060009081526001602052604090206007015490565b6000828152600160205260409020600901546001600160a01b031633146127a35760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b8015806127c357506127bf612710670de0b6b3a764000061411d565b8110155b6128015760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b2000081111561284c5760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b600082815260016020526040908190206008810183905560090154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d52916127019133916001600160a01b0390911690869061413f565b6128ae61315a565b61174f816132ce565b60405163b8421e2b60e01b81526001600160a01b0382811660048301526000917f0000000000000000000000008149276f275eefac110d74afe8afeceaec7d15939091169063b8421e2b90602401602060405180830381865afa158015612922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190614201565b6129716040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff166129a15760405162461bcd60e51b81526004016107999061421a565b60006129ad86866136bb565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd76001600160a01b031615612b6e576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd79091169063f9eaee0d90602401602060405180830381865afa158015612a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa29190614163565b612abe5760405162461bcd60e51b81526004016107999061427c565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd790911690638b28ab1e90604401602060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b649190614201565b6020820152612b76565b600060208201525b60008781526001602052604090206008015415612bc857600087815260016020526040902060080154612bbe90670de0b6b3a764000090612bb890859061372a565b90613736565b6040820152612bd0565b600060408201525b8415612bf657612bec670de0b6b3a7640000612bb8848861372a565b6060820152612bfe565b600060608201525b612c258160600151611e878360200151611e878560400151876134b490919063ffffffff16565b81529695505050505050565b612c3961315a565b612c438282613742565b6114e96001600055565b600081815260016020526040812054819060ff16612c6e5750600092915050565b6000838152600160205260409020600c015460ff168015612d065750600083815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015612ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d069190614163565b15612e0e576000838152600160208181526040928390209091015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa158015612d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d869190614201565b600084815260016020818152604092839020909101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015612ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e019190614201565b612e0b9190614265565b90505b600083815260016020526040902060060154612e2a90826142d9565b9392505050565b612e5c6040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff16612e8c5760405162461bcd60e51b81526004016107999061421a565b6000612e9886866136bb565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd76001600160a01b031615613059576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd79091169063f9eaee0d90602401602060405180830381865afa158015612f69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8d9190614163565b612fa95760405162461bcd60e51b81526004016107999061427c565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd790911690638b28ab1e90604401602060405180830381865afa15801561302b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304f9190614201565b6020820152613061565b600060208201525b600087815260016020526040902060080154156130ad576000878152600160205260409020600801546130a390670de0b6b3a764000090612bb890859061372a565b60408201526130b5565b600060408201525b84156130db576130d1670de0b6b3a7640000612bb8848861372a565b60608201526130e3565b600060608201525b612c25816060015161310a836020015161310a85604001518761335a90919063ffffffff16565b9061335a565b604080516001600160a01b03938416602080830191909152929093168382015280518084038201815260609093019052815191012090565b61315061315a565b612c4382826138b4565b600260005414156131ad5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610799565b6002600055565b6000818152600160209081526040808320600b0180549390558051631a81876d60e01b81529051613276926001600160a01b037f0000000000000000000000008149276f275eefac110d74afe8afeceaec7d15931692631a81876d92600480830193928290030181865afa158015613230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132549190614180565b6000848152600160205260409020600201546001600160a01b031690836134c0565b6000828152600160209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf910160405180910390a35050565b6000818152600160209081526040808320600a810180549490556002015490518381526001600160a01b039091169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910160405180910390a3600082815260016020526040902060098101546002909101546114e9916001600160a01b039182169116836134c0565b60006115b682846142d9565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908616906370a0823190602401602060405180830381865afa1580156133b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d49190614201565b90506133eb6001600160a01b038616858585613a2e565b6133f5818361335a565b6040516370a0823160e01b81526001600160a01b0385811660048301528716906370a0823190602401602060405180830381865afa15801561343b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345f9190614201565b10156134ad5760405162461bcd60e51b815260206004820152601a60248201527f5472616e7366657220616d6f756e7420697320746f6f206c6f770000000000006044820152606401610799565b5050505050565b60006115b68284614265565b6040516001600160a01b03831660248201526044810182905261149390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613a55565b60008161353257506000612e2a565b6000836001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015613571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135959190614180565b60405163160a792560e01b81526001600160a01b03878116600483015291925060009183169063160a792590602401608060405180830381865afa1580156135e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360591906142f1565b80519091501515600114806136205750602081015115156001145b8061369f57506040516331a9108f60e11b8152600160048201526001600160a01b038088169190841690636352211e90602401602060405180830381865afa158015613670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136949190614180565b6001600160a01b0316145b156136af57600192505050612e2a565b50600095945050505050565b6000828152600160205260408120600401546115b690670de0b6b3a764000090612bb8906136ea90600a61445a565b600087815260016020526040902060050154612bb89061370b90600a61445a565b60008981526001602052604090206003015461372890899061372a565b905b60006115b68284614466565b60006115b6828461411d565b6000828152600160205260409020600601548111156137955760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa1580156137eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380f9190614180565b60008481526001602052604090206006015490915061382e90836134b4565b600084815260016020818152604092839020600681019490945592015490518481526001600160a01b03918216929184169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910160405180910390a460008381526001602081905260409091200154611493906001600160a01b031682846134c0565b6000828152600160205260409020600701548111156139075760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa15801561395d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139819190614180565b6000848152600160205260409020600701549091506139a090836134b4565b60008481526001602052604090819020600781019290925560029091015490516001600160a01b039182169183169085907fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163690613a009087815260200190565b60405180910390a4600083815260016020526040902060020154611493906001600160a01b031682846134c0565b613a4f846323b872dd60e01b8585856040516024016134ec9392919061413f565b50505050565b6000613aaa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b279092919063ffffffff16565b8051909150156114935780806020019051810190613ac89190614163565b6114935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610799565b6060613b368484600085613b3e565b949350505050565b606082471015613b9f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610799565b843b613bed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610799565b600080866001600160a01b03168587604051613c0991906144b1565b60006040518083038185875af1925050503d8060008114613c46576040519150601f19603f3d011682016040523d82523d6000602084013e613c4b565b606091505b5091509150613c5b828286613c66565b979650505050505050565b60608315613c75575081612e2a565b825115613c855782518084602001fd5b8160405162461bcd60e51b815260040161079991906144cd565b6001600160a01b038116811461175957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613cf357613cf3613cb4565b604052919050565b600067ffffffffffffffff821115613d1557613d15613cb4565b5060051b60200190565b600082601f830112613d3057600080fd5b81356020613d45613d4083613cfb565b613cca565b82815260059290921b84018101918181019086841115613d6457600080fd5b8286015b84811015613d7f5780358352918301918301613d68565b509695505050505050565b600080600060608486031215613d9f57600080fd5b8335613daa81613c9f565b925060208481013567ffffffffffffffff80821115613dc857600080fd5b818701915087601f830112613ddc57600080fd5b8135613dea613d4082613cfb565b81815260059190911b8301840190848101908a831115613e0957600080fd5b938501935b82851015613e30578435613e2181613c9f565b82529385019390850190613e0e565b965050506040870135925080831115613e4857600080fd5b5050613e5686828701613d1f565b9150509250925092565b600060208284031215613e7257600080fd5b5035919050565b600060208284031215613e8b57600080fd5b8135612e2a81613c9f565b6020808252825182820181905260009190848201906040850190845b81811015613ece57835183529284019291840191600101613eb2565b50909695505050505050565b60008060208385031215613eed57600080fd5b823567ffffffffffffffff80821115613f0557600080fd5b818501915085601f830112613f1957600080fd5b813581811115613f2857600080fd5b8660208260051b8501011115613f3d57600080fd5b60209290920196919550909350505050565b60008060408385031215613f6257600080fd5b8235613f6d81613c9f565b946020939093013593505050565b600080600080600060a08688031215613f9357600080fd5b8535945060208601359350604086013592506060860135613fb381613c9f565b949793965091946080013592915050565b60008060408385031215613fd757600080fd5b823591506020830135613fe981613c9f565b809150509250929050565b6000806040838503121561400757600080fd5b50508035926020909101359150565b801515811461175957600080fd5b6000806040838503121561403757600080fd5b823591506020830135613fe981614016565b60008060006060848603121561405e57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561408857600080fd5b823561409381613c9f565b91506020830135613fe981613c9f565b634e487b7160e01b600052603260045260246000fd5b6020808252602e908201527f46697865645261746545786368616e67653a20496e76616c696420657863686160408201526d6e676520726174652076616c756560901b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008261413a57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561417557600080fd5b8151612e2a81614016565b60006020828403121561419257600080fd5b8151612e2a81613c9f565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b60006000198214156141fa576141fa614107565b5060010190565b60006020828403121561421357600080fd5b5051919050565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60008282101561427757614277614107565b500390565b60208082526039908201527f546869732062617365546f6b656e206973206e6f7420616c6c6f77656420627960408201527f20656e74657270726973652066656520636f6c6c6563746f7200000000000000606082015260800190565b600082198211156142ec576142ec614107565b500190565b60006080828403121561430357600080fd5b6040516080810181811067ffffffffffffffff8211171561432657614326613cb4565b604052825161433481614016565b8152602083015161434481614016565b6020820152604083015161435781614016565b6040820152606083015161436a81614016565b60608201529392505050565b600181815b808511156143b157816000190482111561439757614397614107565b808516156143a457918102915b93841c939080029061437b565b509250929050565b6000826143c8575060016115b9565b816143d5575060006115b9565b81600181146143eb57600281146143f557614411565b60019150506115b9565b60ff84111561440657614406614107565b50506001821b6115b9565b5060208310610133831016604e8410600b8410161715614434575081810a6115b9565b61443e8383614376565b806000190482111561445257614452614107565b029392505050565b60006115b683836143b9565b600081600019048311821515161561448057614480614107565b500290565b60005b838110156144a0578181015183820152602001614488565b83811115613a4f5750506000910152565b600082516144c3818460208701614485565b9190910192915050565b60208152600082518060208401526144ec816040850160208701614485565b601f01601f1916919091016040019291505056fea26469706673582212209f0383b1876e6c0d1a7a99f0c9937601146a8934144382e2a3b3df0504788f2364736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008149276f275eefac110d74afe8afeceaec7d1593000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd7
-----Decoded View---------------
Arg [0] : _router (address): 0x8149276f275EEFAc110D74AFE8AFECEaeC7d1593
Arg [1] : _enterpriseFeeCollector (address): 0x254302d1Ae1e1200319c885D93D40a8927ACFcD7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008149276f275eefac110d74afe8afeceaec7d1593
Arg [1] : 000000000000000000000000254302d1ae1e1200319c885d93d40a8927acfcd7
🤖 Code Reader
Generate instant answers for your smart contract questions using AI Models. Read more.
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 30 Chains
Tokens
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.


