Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 17820490 | 342 days ago | IN | Create: WrappedERC20Bridge | 0 ETH | 0.08686963 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
WrappedERC20Bridge
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 999999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import "./AbstractBridge.sol"; import "./release/IRelease.sol"; import "../ERC20/ERC20Wrapped.sol"; import "../Mutex.sol"; contract WrappedERC20Bridge is AbstractBridge, Mutex { uint8 constant DECIMALS = 6; mapping(uint128 => mapping(address => BindingInfo)) public bindings; mapping(address => uint256) public fees; mapping(address => uint256) public balances; event BurnTokens( uint16 feeChainId, address token, uint256 amount, string recipient, uint256 gaslessReward, string referrer, uint256 referrerFee, uint256 fee ); event MintTokens( address token, uint256 amount, address recipient, uint256 gaslessReward, address caller ); event Fee( uint16 feeChainId, address token, uint256 amount, string recipient ); function burnTokens( address token_, uint256 amount_, uint16 executionChainId_, string calldata recipient_, string calldata referrer_, uint256 gaslessReward_ ) external mutex whenNotPaused whenInitialized { require(token_ != address(0), "unavaliable token"); require(chains[executionChainId_], "execution chain is disable"); require( bindings[executionChainId_][token_].enabled, "token is disabled" ); require( amount_ >= bindings[executionChainId_][token_].minAmount, "less than min amount" ); uint256 fee = calculateFee_(executionChainId_, token_, amount_); require(amount_ > fee, "fee more than amount"); unchecked { amount_ = amount_ - fee; } require(amount_ > gaslessReward_, "gassless reward more than amount"); uint256 referrerFee = (fee * referrersFeeInPercent[executionChainId_][referrer_]) / PERCENT_FACTOR; fees[token_] += fee - referrerFee; balances[token_] -= amount_ + referrerFee; uint256 divider = 10**(IERC20(token_).decimals() - DECIMALS); emit BurnTokens( executionChainId_, token_, amount_, recipient_, gaslessReward_, referrer_, referrerFee, fee - referrerFee ); IRelease(adapter).releaseTokens( executionChainId_, bindings[executionChainId_][token_].executionAsset, amount_ / divider, recipient_, gaslessReward_ / divider, referrer_, referrerFee / divider ); ERC20Wrapped(token_).burnFrom(msg.sender, amount_ + fee); } function calculateFee_( uint16 executionChainId_, address token_, uint256 amount_ ) internal view returns (uint256) { uint128 percent = amount_ > bindings[executionChainId_][token_].thresholdFee ? bindings[executionChainId_][token_].afterPercentFee : bindings[executionChainId_][token_].beforePercentFee; return bindings[executionChainId_][token_].minFee + (amount_ * percent) / PERCENT_FACTOR; } function mintTokens( bytes32 callerContract_, address token_, address payable recipient_, uint256 amount_, uint256 gaslessReward_ ) external mutex whenNotPaused whenInitialized onlyExecutor { require(token_ != address(0), "zero address"); require(callerContract == callerContract_, "only caller contract"); uint256 divider = 10**(IERC20(token_).decimals() - DECIMALS); amount_ *= divider; gaslessReward_ *= divider; balances[token_] += amount_; // slither-disable-start tx-origin emit MintTokens(token_, amount_, recipient_, gaslessReward_, tx.origin); if (gaslessReward_ > 0 && recipient_ != tx.origin) { ERC20Wrapped(token_).mint(recipient_, amount_ - gaslessReward_); ERC20Wrapped(token_).mint(tx.origin, gaslessReward_); } else { ERC20Wrapped(token_).mint(recipient_, amount_); } // slither-disable-end tx-origin } function transferFee(address token_) external mutex whenNotPaused whenInitialized { uint16 feeChainId_ = feeChainId; require(chains[feeChainId_], "chain is disable"); BindingInfo memory binding = bindings[feeChainId_][token_]; require(binding.enabled, "token is disabled"); uint256 fee_ = fees[token_]; require(fee_ >= binding.minAmount, "less than min amount"); balances[token_] += fee_; fees[token_] = 0; fee_ /= 10**(ERC20Wrapped(token_).decimals() - DECIMALS); string memory feeRecipient_ = feeRecipient; emit Fee(feeChainId_, token_, fee_, feeRecipient_); IRelease(adapter).releaseTokens( feeChainId_, binding.executionAsset, fee_, feeRecipient_, 0, "", 0 ); } function updateBindingInfo( uint16 executionChainId_, address token_, string calldata executionAsset_, uint256 minAmount_, uint256 minFee_, uint256 thresholdFee_, uint128 beforePercentFee_, uint128 afterPercentFee_, bool enabled_ ) external onlyAdmin { require(token_ != address(0), "zero address"); require( !enabled_ || IERC20(token_).decimals() >= DECIMALS, "invalid token decimals" ); bindings[executionChainId_][token_] = BindingInfo( executionAsset_, minAmount_, minFee_, thresholdFee_, beforePercentFee_, afterPercentFee_, enabled_ ); } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import "../Pausable.sol"; import "../Initializable.sol"; abstract contract AbstractBridge is Initializable, Pausable { struct BindingInfo { string executionAsset; uint256 minAmount; uint256 minFee; uint256 thresholdFee; uint128 beforePercentFee; uint128 afterPercentFee; bool enabled; } event ExecutionChainUpdated(uint128 feeChainId, address caller); event FeeChainUpdated(uint128 feeChainId, address caller); event CallerContractUpdated(bytes32 executorContract, address caller); event FeeRecipientUpdated(string feeRecipient, address caller); event SignerUpdated(address caller, address oldSigner, address signer); event ReferrerFeeUpdated( uint128 chainId, string referrer, uint128 feeInPercent ); uint128 constant PERCENT_FACTOR = 10 ** 6; uint16 public feeChainId; string public feeRecipient; address public adapter; address public executor; bytes32 callerContract; mapping(uint128 => bool) public chains; mapping(uint128 => mapping(string => uint128)) public referrersFeeInPercent; modifier onlyExecutor() { require(msg.sender == executor, "only executor"); _; } function init( address admin_, address adapter_, uint16 feeChainId_, string calldata feeRecipient_, address executor_, bytes32 callerContract_ ) external whenNotInitialized { require(admin_ != address(0), "zero address"); require(adapter_ != address(0), "zero address"); require(executor_ != address(0), "zero address"); feeChainId = feeChainId_; pauser = admin_; admin = admin_; feeRecipient = feeRecipient_; adapter = adapter_; executor = executor_; callerContract = callerContract_; isInited = true; } function updateExecutionChain( uint128 executionChainId_, bool enabled ) external onlyAdmin { emit ExecutionChainUpdated(executionChainId_, msg.sender); chains[executionChainId_] = enabled; } function updateFeeChain(uint16 feeChainId_) external onlyAdmin { emit FeeChainUpdated(feeChainId_, msg.sender); feeChainId = feeChainId_; } function updateCallerContract(bytes32 callerContract_) external onlyAdmin { emit CallerContractUpdated(callerContract_, msg.sender); callerContract_ = callerContract_; } function updateFeeRecipient( string calldata feeRecipient_ ) external onlyAdmin { emit FeeRecipientUpdated(feeRecipient_, msg.sender); feeRecipient = feeRecipient_; } function updateReferrer( uint128 executionChainId_, string calldata referrer_, uint128 percentFee_ ) external onlyAdmin { require(percentFee_ <= 2e5); // up 20% max require(chains[executionChainId_], "execution chain is disable"); emit ReferrerFeeUpdated(executionChainId_, referrer_, percentFee_); referrersFeeInPercent[executionChainId_][referrer_] = percentFee_; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; interface IRelease { function releaseTokens( uint16 executionChainId_, string calldata token_, uint256 amount_, string calldata recipient_, uint256 gaslessClaimReward_, string calldata referrer_, uint256 referrerFee_ ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import "./IERC20.sol"; import "../Pausable.sol"; import "../Initializable.sol"; contract ERC20Wrapped is IERC20, Pausable, Initializable { event MinterUpdated(address sender, address oldMinter, address minter); address public minter; mapping(address => uint256) public override balanceOf; mapping(address => mapping(address => uint256)) public override allowance; uint256 public override totalSupply; uint8 public override decimals; string public override name; string public override symbol; function init( string memory name_, string memory symbol_, uint8 decimals_, address admin_ ) external whenNotInitialized { require(admin_ != address(0), "zero address"); name = name_; symbol = symbol_; decimals = decimals_; admin = admin_; minter = admin_; pauser = admin_; isInited = true; } function transfer(address to_, uint256 amount_) external override whenNotPaused returns (bool) { require(to_ != address(0), "zero address"); uint256 fromBalance_ = balanceOf[msg.sender]; require(fromBalance_ >= amount_, "amount exceeds balance"); unchecked { balanceOf[msg.sender] = fromBalance_ - amount_; } balanceOf[to_] += amount_; emit Transfer(msg.sender, to_, amount_); return true; } function approve(address spender_, uint256 amount_) external override returns (bool) { require(spender_ != address(0), "zero address"); allowance[msg.sender][spender_] = amount_; emit Approval(msg.sender, spender_, amount_); return true; } function transferFrom( address from_, address to_, uint256 amount_ ) external override whenNotPaused returns (bool) { require(from_ != address(0), "from zero address"); require(to_ != address(0), "to zero address"); _transfer(from_, msg.sender, amount_); balanceOf[to_] += amount_; emit Transfer(from_, to_, amount_); return true; } function burn(uint256 amount_) external whenNotPaused { uint256 accountBalance_ = balanceOf[msg.sender]; require(accountBalance_ >= amount_, "amount exceeds balance"); unchecked { balanceOf[msg.sender] = accountBalance_ - amount_; } totalSupply -= amount_; emit Transfer(msg.sender, address(0), amount_); } function burnFrom(address from_, uint256 amount_) external whenNotPaused { require(from_ != address(0), "zero address"); _transfer(from_, msg.sender, amount_); totalSupply -= amount_; emit Transfer(from_, address(0), amount_); } function mint(address to_, uint256 amount_) external whenNotPaused { require(to_ != address(0), "zero address"); require(minter == msg.sender, "only minter"); totalSupply += amount_; balanceOf[to_] += amount_; emit Transfer(address(0), to_, amount_); } function updateMinter(address minter_) external onlyAdmin { require(minter_ != address(0), "zero address"); emit MinterUpdated(msg.sender, minter, minter_); minter = minter_; } function _transfer( address from_, address to_, uint256 amount_ ) internal { uint256 currentAllowance_ = allowance[from_][to_]; if (currentAllowance_ != type(uint256).max) { require(currentAllowance_ >= amount_, "insufficient allowance"); unchecked { allowance[from_][to_] = currentAllowance_ - amount_; emit Approval(from_, to_, currentAllowance_ - amount_); } } uint256 fromBalance_ = balanceOf[from_]; require(fromBalance_ >= amount_, "amount exceeds balance"); unchecked { balanceOf[from_] = fromBalance_ - amount_; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; abstract contract Mutex { bool private _lock; modifier mutex() { require(!_lock, "mutex lock"); _lock = true; _; _lock = false; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import "./Adminable.sol"; abstract contract Pausable is Adminable { event Paused(address account); event Unpaused(address account); event PauserUpdated(address sender, address oldPauser, address pauser); bool public isPaused; address public pauser; constructor() { isPaused = false; } modifier whenNotPaused() { require(!isPaused, "paused"); _; } modifier whenPaused() { require(isPaused, "not paused"); _; } modifier onlyPauser() { require(pauser == msg.sender, "only pauser"); _; } function pause() external whenNotPaused onlyPauser { isPaused = true; emit Paused(msg.sender); } function unpause() external whenPaused onlyPauser { isPaused = false; emit Unpaused(msg.sender); } function updatePauser(address pauser_) external onlyAdmin { require(pauser_ != address(0), "zero address"); emit PauserUpdated(msg.sender, pauser, pauser_); pauser = pauser_; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; abstract contract Initializable { bool internal isInited; modifier whenInitialized() { require(isInited, "not initialized"); _; } modifier whenNotInitialized() { require(!isInited, "already initialized"); _; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; abstract contract Adminable { event AdminUpdated(address sender, address oldAdmin, address admin); address public admin; modifier onlyAdmin() { require(admin == msg.sender, "only admin"); _; } function updateAdmin(address admin_) external onlyAdmin { require(admin_ != address(0), "zero address"); emit AdminUpdated(msg.sender, admin, admin_); admin = admin_; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account_) external view returns (uint256); function transfer(address to_, uint256 amount_) external returns (bool); function allowance(address owner_, address spender_) external view returns (uint256); function approve(address spender_, uint256 amount_) external returns (bool); function transferFrom( address from_, address to_, uint256 amount_ ) external returns (bool); }
{ "optimizer": { "enabled": true, "runs": 999999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"feeChainId","type":"uint16"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"recipient","type":"string"},{"indexed":false,"internalType":"uint256","name":"gaslessReward","type":"uint256"},{"indexed":false,"internalType":"string","name":"referrer","type":"string"},{"indexed":false,"internalType":"uint256","name":"referrerFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"BurnTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"executorContract","type":"bytes32"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"CallerContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"feeChainId","type":"uint128"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"ExecutionChainUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"feeChainId","type":"uint16"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"recipient","type":"string"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"feeChainId","type":"uint128"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"FeeChainUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"feeRecipient","type":"string"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"FeeRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"gaslessReward","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"MintTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldPauser","type":"address"},{"indexed":false,"internalType":"address","name":"pauser","type":"address"}],"name":"PauserUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"chainId","type":"uint128"},{"indexed":false,"internalType":"string","name":"referrer","type":"string"},{"indexed":false,"internalType":"uint128","name":"feeInPercent","type":"uint128"}],"name":"ReferrerFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":false,"internalType":"address","name":"signer","type":"address"}],"name":"SignerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"adapter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"address","name":"","type":"address"}],"name":"bindings","outputs":[{"internalType":"string","name":"executionAsset","type":"string"},{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"uint256","name":"minFee","type":"uint256"},{"internalType":"uint256","name":"thresholdFee","type":"uint256"},{"internalType":"uint128","name":"beforePercentFee","type":"uint128"},{"internalType":"uint128","name":"afterPercentFee","type":"uint128"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint16","name":"executionChainId_","type":"uint16"},{"internalType":"string","name":"recipient_","type":"string"},{"internalType":"string","name":"referrer_","type":"string"},{"internalType":"uint256","name":"gaslessReward_","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"}],"name":"chains","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeChainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"adapter_","type":"address"},{"internalType":"uint16","name":"feeChainId_","type":"uint16"},{"internalType":"string","name":"feeRecipient_","type":"string"},{"internalType":"address","name":"executor_","type":"address"},{"internalType":"bytes32","name":"callerContract_","type":"bytes32"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"callerContract_","type":"bytes32"},{"internalType":"address","name":"token_","type":"address"},{"internalType":"address payable","name":"recipient_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"gaslessReward_","type":"uint256"}],"name":"mintTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"string","name":"","type":"string"}],"name":"referrersFeeInPercent","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"transferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"}],"name":"updateAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"executionChainId_","type":"uint16"},{"internalType":"address","name":"token_","type":"address"},{"internalType":"string","name":"executionAsset_","type":"string"},{"internalType":"uint256","name":"minAmount_","type":"uint256"},{"internalType":"uint256","name":"minFee_","type":"uint256"},{"internalType":"uint256","name":"thresholdFee_","type":"uint256"},{"internalType":"uint128","name":"beforePercentFee_","type":"uint128"},{"internalType":"uint128","name":"afterPercentFee_","type":"uint128"},{"internalType":"bool","name":"enabled_","type":"bool"}],"name":"updateBindingInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"callerContract_","type":"bytes32"}],"name":"updateCallerContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"executionChainId_","type":"uint128"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateExecutionChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"feeChainId_","type":"uint16"}],"name":"updateFeeChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"feeRecipient_","type":"string"}],"name":"updateFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pauser_","type":"address"}],"name":"updatePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"executionChainId_","type":"uint128"},{"internalType":"string","name":"referrer_","type":"string"},{"internalType":"uint128","name":"percentFee_","type":"uint128"}],"name":"updateReferrer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506000805460ff60a81b19169055613f8e8061002d6000396000f3fe6080604052600436106101a55760003560e01c8063b187bd26116100e1578063e2f273bd1161008a578063eb20dabf11610064578063eb20dabf1461056d578063f67db96b1461058d578063f851a440146105d3578063faaebd211461060557600080fd5b8063e2f273bd1461050d578063e45da5261461052d578063ea8c4bcf1461054d57600080fd5b8063c34c08e5116100bb578063c34c08e514610490578063ce4ea09f146104bd578063e22fe72f146104dd57600080fd5b8063b187bd261461040d578063b3c276e214610450578063bac9e1b71461047057600080fd5b80633f4ba83a1161014e5780635f7ebb05116101285780635f7ebb051461032f5780638456cb591461034f5780638497e666146103645780639fd0506d146103e057600080fd5b80633f4ba83a146102d857806346904840146102ed578063554bab3c1461030f57600080fd5b80632079b5a91161017f5780632079b5a91461024a5780632156d4211461026a57806327e235e31461029d57600080fd5b806303eadcfc146101b15780630bab6053146102085780631c47ae5e1461022a57600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506003546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561021457600080fd5b5061022861022336600461312c565b610632565b005b34801561023657600080fd5b5061022861024536600461317a565b6106f8565b34801561025657600080fd5b5061022861026536600461322d565b61081a565b34801561027657600080fd5b5061028a6102853660046132d1565b611091565b6040516101ff979695949392919061336c565b3480156102a957600080fd5b506102ca6102b83660046133c4565b600b6020526000908152604090205481565b6040519081526020016101ff565b3480156102e457600080fd5b50610228611187565b3480156102f957600080fd5b506103026112eb565b6040516101ff91906133e8565b34801561031b57600080fd5b5061022861032a3660046133c4565b611379565b34801561033b57600080fd5b5061022861034a3660046133fb565b61151c565b34801561035b57600080fd5b5061022861162b565b34801561037057600080fd5b506103bf61037f366004613445565b600760209081526000928352604090922081518083018401805192815290840192909301919091209152546fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ff565b3480156103ec57600080fd5b506001546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041957600080fd5b50600054610440907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101ff565b34801561045c57600080fd5b5061022861046b366004613525565b6117a2565b34801561047c57600080fd5b5061022861048b3660046135bc565b611ad1565b34801561049c57600080fd5b506004546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c957600080fd5b506102286104d8366004613621565b611ccc565b3480156104e957600080fd5b506104406104f83660046136d7565b60066020526000908152604090205460ff1681565b34801561051957600080fd5b506102286105283660046133c4565b612013565b34801561053957600080fd5b506102286105483660046136f2565b6121c0565b34801561055957600080fd5b506102286105683660046133c4565b612293565b34801561057957600080fd5b50610228610588366004613734565b612978565b34801561059957600080fd5b506001546105c09074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020016101ff565b3480156105df57600080fd5b506000546101de90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561061157600080fd5b506102ca6106203660046133c4565b600a6020526000908152604090205481565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146106bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b604080518281523360208201527fcff96c14f90d679c9b2edb1cd5b9990824d3083f97ade84c79539884ca33fc02910160405180910390a150565b600054610100900473ffffffffffffffffffffffffffffffffffffffff16331461077e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b604080516fffffffffffffffffffffffffffffffff841681523360208201527fcd8ca9842747d8162878825088ab13c89199cba4f7f23889db839b92328ef815910160405180910390a16fffffffffffffffffffffffffffffffff91909116600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60085460ff1615610887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b0000000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000547501000000000000000000000000000000000000000000900460ff1615610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60005460ff166109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8816610a21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f756e6176616c6961626c6520746f6b656e00000000000000000000000000000060448201526064016106b4565b61ffff861660009081526006602052604090205460ff16610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f657865637574696f6e20636861696e2069732064697361626c6500000000000060448201526064016106b4565b61ffff8616600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290206005015460ff16610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f6b656e2069732064697361626c656400000000000000000000000000000060448201526064016106b4565b61ffff8616600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152902060010154871015610be0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6c657373207468616e206d696e20616d6f756e7400000000000000000000000060448201526064016106b4565b6000610bed878a8a612fc7565b9050808811610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f666565206d6f7265207468616e20616d6f756e7400000000000000000000000060448201526064016106b4565b8088039750818811610cc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f676173736c65737320726577617264206d6f7265207468616e20616d6f756e7460448201526064016106b4565b61ffff87166000908152600760205260408082209051620f42409190610cef9088908890613786565b90815260405190819003602001902054610d1b906fffffffffffffffffffffffffffffffff16846137c5565b610d2591906137e2565b9050610d31818361381d565b73ffffffffffffffffffffffffffffffffffffffff8b166000908152600a602052604081208054909190610d66908490613830565b90915550610d769050818a613830565b73ffffffffffffffffffffffffffffffffffffffff8b166000908152600b602052604081208054909190610dab90849061381d565b92505081905550600060068b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e259190613843565b610e2f9190613866565b610e3a90600a61399f565b90507f846d48b5dad0cf4233578e8b84dff2bb1f49f5ef280b0a5abf783b1d06aeb4cc898c8c8b8b898c8c8a610e70818e61381d565b604051610e869a999897969594939291906139f7565b60405180910390a1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7b2831e8a600960008d61ffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848e610f4291906137e2565b8c8c610f4e888c6137e2565b8d8d610f5a8b8d6137e2565b6040518a63ffffffff1660e01b8152600401610f7e99989796959493929190613ac0565b600060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff166379cc679033858d610fd99190613830565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050505050505050505050565b60096020908152600092835260408084209091529082529020805481906110b790613a6d565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613a6d565b80156111305780601f1061110557610100808354040283529160200191611130565b820191906000526020600020905b81548152906001019060200180831161111357829003601f168201915b50505060018401546002850154600386015460048701546005909701549596929591945092506fffffffffffffffffffffffffffffffff808316927001000000000000000000000000000000009004169060ff1687565b6000547501000000000000000000000000000000000000000000900460ff1661120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207061757365640000000000000000000000000000000000000000000060448201526064016106b4565b60015473ffffffffffffffffffffffffffffffffffffffff16331461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c792070617573657200000000000000000000000000000000000000000060448201526064016106b4565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b600280546112f890613a6d565b80601f016020809104026020016040519081016040528092919081815260200182805461132490613a6d565b80156113715780601f1061134657610100808354040283529160200191611371565b820191906000526020600020905b81548152906001019060200180831161135457829003601f168201915b505050505081565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146113ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff811661147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b6001546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f9b3d82621a55ae56941a49b01b3111acf42e49f89b2af1a6dea8fb9886d3520c9181900360600190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b6040805161ffff831681523360208201527fa3f2d453e9999c008b07f10a428e6a33ce8dd4b9423bef99ff9cd579cedfb8b5910160405180910390a16001805461ffff90921674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000547501000000000000000000000000000000000000000000900460ff16156116b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60015473ffffffffffffffffffffffffffffffffffffffff163314611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c792070617573657200000000000000000000000000000000000000000060448201526064016106b4565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016112e1565b60005460ff161561180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a65640000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff871661188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8616611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8216611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b600180547fffffffffffffffffffff00000000000000000000000000000000000000000000167401000000000000000000000000000000000000000061ffff8816027fffffffffffffffffffffffff0000000000000000000000000000000000000000161773ffffffffffffffffffffffffffffffffffffffff8916908117909155600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101009092029190911790556002611a47848683613c05565b506003805473ffffffffffffffffffffffffffffffffffffffff9788167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600480549390971692169190911790945550505060055550600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b62030d40816fffffffffffffffffffffffffffffffff161115611b7957600080fd5b6fffffffffffffffffffffffffffffffff841660009081526006602052604090205460ff16611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f657865637574696f6e20636861696e2069732064697361626c6500000000000060448201526064016106b4565b7f933e13f2c0174ad6202905ed6eb73212911941c4fb8daf560b05445099b52e2784848484604051611c399493929190613d20565b60405180910390a16fffffffffffffffffffffffffffffffff8416600090815260076020526040908190209051829190611c769086908690613786565b90815260405190819003602001902080546fffffffffffffffffffffffffffffffff929092167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117905550505050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8916611dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b801580611e515750600660ff168973ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b9190613843565b60ff1610155b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c696420746f6b656e20646563696d616c730000000000000000000060448201526064016106b4565b6040518060e0016040528089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505060208083018a905260408084018a9052606084018990526fffffffffffffffffffffffffffffffff8089166080860152871660a085015285151560c09094019390935261ffff8e1682526009815282822073ffffffffffffffffffffffffffffffffffffffff8e16835290522081518190611f759082613d61565b50602082015160018201556040820151600282015560608201516003820155608082015160a08301516fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002911617600482015560c090910151600590910180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905550505050505050505050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314612099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8116612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b6000546040805133815273ffffffffffffffffffffffffffffffffffffffff6101009093048316602082015291831682820152517f9f6130d220a6021d90d78c7ed17b7cfb79f530974405b174fef75f671205513c9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b7f212215b14b6f95abef8735f1a53e5383ebe2be1b7767190b1429c167e9b55a3182823360405161227993929190613e7b565b60405180910390a1600261228e828483613c05565b505050565b60085460ff1615612300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b0000000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000547501000000000000000000000000000000000000000000900460ff16156123b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60005460ff1661241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016106b4565b60015474010000000000000000000000000000000000000000900461ffff1660008181526006602052604090205460ff166124b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f636861696e2069732064697361626c650000000000000000000000000000000060448201526064016106b4565b61ffff8116600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152808220815160e0810190925280548290829061250190613a6d565b80601f016020809104026020016040519081016040528092919081815260200182805461252d90613a6d565b801561257a5780601f1061254f5761010080835404028352916020019161257a565b820191906000526020600020905b81548152906001019060200180831161255d57829003601f168201915b505050918352505060018201546020820152600282015460408201526003820154606082015260048201546fffffffffffffffffffffffffffffffff80821660808401527001000000000000000000000000000000009091041660a082015260059091015460ff16151560c091820152810151909150612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f6b656e2069732064697361626c656400000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020908152604090912054908201518110156126ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6c657373207468616e206d696e20616d6f756e7400000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604081208054839290612721908490613830565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000818152600a602090815260408083209290925581517f313ce56700000000000000000000000000000000000000000000000000000000815291516006939263313ce5679260048083019391928290030181865afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c89190613843565b6127d29190613866565b6127dd90600a61399f565b6127e790826137e2565b90506000600280546127f890613a6d565b80601f016020809104026020016040519081016040528092919081815260200182805461282490613a6d565b80156128715780601f1061284657610100808354040283529160200191612871565b820191906000526020600020905b81548152906001019060200180831161285457829003601f168201915b505050505090507fa5baec630f25dd3f696ae19213123aad0ca2dbade68c69d86cbef9501b740289848684846040516128ad9493929190613eb5565b60405180910390a160035483516040517fd7b2831e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163d7b2831e9161291791889190879087906000908190600401613efe565b600060405180830381600087803b15801561293157600080fd5b505af1158015612945573d6000803e3d6000fd5b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050505050565b60085460ff16156129e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b0000000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000547501000000000000000000000000000000000000000000900460ff1615612a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60005460ff16612b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016106b4565b60045473ffffffffffffffffffffffffffffffffffffffff163314612b83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6f6e6c79206578656375746f720000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8416612c00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b8460055414612c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c792063616c6c657220636f6e747261637400000000000000000000000060448201526064016106b4565b600060068573ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cde9190613843565b612ce89190613866565b612cf390600a61399f565b9050612cff81846137c5565b9250612d0b81836137c5565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600b6020526040812080549294508592909190612d45908490613830565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff8781168252602082018690528616818301526060810184905232608082015290517f4c50a49b21c655b6eaa46cdcaeb12823f639494624bf1b241628ed46e6ea69ca9181900360a00190a1600082118015612dd4575073ffffffffffffffffffffffffffffffffffffffff84163214155b15612f0e5773ffffffffffffffffffffffffffffffffffffffff85166340c10f1985612e00858761381d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b158015612e6b57600080fd5b505af1158015612e7f573d6000803e3d6000fd5b50506040517f40c10f190000000000000000000000000000000000000000000000000000000081523260048201526024810185905273ffffffffffffffffffffffffffffffffffffffff881692506340c10f199150604401600060405180830381600087803b158015612ef157600080fd5b505af1158015612f05573d6000803e3d6000fd5b50505050612f97565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528616906340c10f1990604401600060405180830381600087803b158015612f7e57600080fd5b505af1158015612f92573d6000803e3d6000fd5b505050505b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050565b61ffff8316600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812060030154819083116130565761ffff8516600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529020600401546fffffffffffffffffffffffffffffffff166130b5565b61ffff8516600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290206004015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050620f42406130d76fffffffffffffffffffffffffffffffff8316856137c5565b6130e191906137e2565b61ffff8616600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff891684529091529020600201546131239190613830565b95945050505050565b60006020828403121561313e57600080fd5b5035919050565b80356fffffffffffffffffffffffffffffffff8116811461316557600080fd5b919050565b8035801515811461316557600080fd5b6000806040838503121561318d57600080fd5b61319683613145565b91506131a46020840161316a565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146131cf57600080fd5b50565b803561ffff8116811461316557600080fd5b60008083601f8401126131f657600080fd5b50813567ffffffffffffffff81111561320e57600080fd5b60208301915083602082850101111561322657600080fd5b9250929050565b60008060008060008060008060c0898b03121561324957600080fd5b8835613254816131ad565b97506020890135965061326960408a016131d2565b9550606089013567ffffffffffffffff8082111561328657600080fd5b6132928c838d016131e4565b909750955060808b01359150808211156132ab57600080fd5b506132b88b828c016131e4565b999c989b50969995989497949560a00135949350505050565b600080604083850312156132e457600080fd5b6132ed83613145565b915060208301356132fd816131ad565b809150509250929050565b6000815180845260005b8181101561332e57602081850181015186830182015201613312565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60e08152600061337f60e083018a613308565b602083019890985250604081019590955260608501939093526fffffffffffffffffffffffffffffffff91821660808501521660a0830152151560c090910152919050565b6000602082840312156133d657600080fd5b81356133e1816131ad565b9392505050565b6020815260006133e16020830184613308565b60006020828403121561340d57600080fd5b6133e1826131d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561345857600080fd5b61346183613145565b9150602083013567ffffffffffffffff8082111561347e57600080fd5b818501915085601f83011261349257600080fd5b8135818111156134a4576134a4613416565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156134ea576134ea613416565b8160405282815288602084870101111561350357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080600080600060c0888a03121561354057600080fd5b873561354b816131ad565b9650602088013561355b816131ad565b9550613569604089016131d2565b9450606088013567ffffffffffffffff81111561358557600080fd5b6135918a828b016131e4565b90955093505060808801356135a5816131ad565b8092505060a0880135905092959891949750929550565b600080600080606085870312156135d257600080fd5b6135db85613145565b9350602085013567ffffffffffffffff8111156135f757600080fd5b613603878288016131e4565b9094509250613616905060408601613145565b905092959194509250565b6000806000806000806000806000806101208b8d03121561364157600080fd5b61364a8b6131d2565b995060208b013561365a816131ad565b985060408b013567ffffffffffffffff81111561367657600080fd5b6136828d828e016131e4565b90995097505060608b0135955060808b0135945060a08b013593506136a960c08c01613145565b92506136b760e08c01613145565b91506136c66101008c0161316a565b90509295989b9194979a5092959850565b6000602082840312156136e957600080fd5b6133e182613145565b6000806020838503121561370557600080fd5b823567ffffffffffffffff81111561371c57600080fd5b613728858286016131e4565b90969095509350505050565b600080600080600060a0868803121561374c57600080fd5b85359450602086013561375e816131ad565b9350604086013561376e816131ad565b94979396509394606081013594506080013592915050565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176137dc576137dc613796565b92915050565b600082613818577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156137dc576137dc613796565b808201808211156137dc576137dc613796565b60006020828403121561385557600080fd5b815160ff811681146133e157600080fd5b60ff82811682821603908111156137dc576137dc613796565b600181815b808511156138d857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138be576138be613796565b808516156138cb57918102915b93841c9390800290613884565b509250929050565b6000826138ef575060016137dc565b816138fc575060006137dc565b8160018114613912576002811461391c57613938565b60019150506137dc565b60ff84111561392d5761392d613796565b50506001821b6137dc565b5060208310610133831016604e8410600b841016171561395b575081810a6137dc565b613965838361387f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561399757613997613796565b029392505050565b60006133e160ff8416836138e0565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010061ffff8d16835273ffffffffffffffffffffffffffffffffffffffff8c1660208401528a6040840152806060840152613a388184018a8c6139ae565b905087608084015282810360a0840152613a538187896139ae565b60c0840195909552505060e0015298975050505050505050565b600181811c90821680613a8157607f821691505b602082108103613aba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b61ffff8a16815260e060208201526000808a54613adc81613a6d565b8060e0860152610100600180841660008114613aff5760018114613b3757613b67565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550613b67565b8f600052602060002060005b85811015613b5f5781548a820186015290830190602001613b43565b890184019650505b50505050508960408401528281036060840152613b8581898b6139ae565b905086608084015282810360a0840152613ba08186886139ae565b9150508260c08301529a9950505050505050505050565b601f82111561228e57600081815260208120601f850160051c81016020861015613bde5750805b601f850160051c820191505b81811015613bfd57828155600101613bea565b505050505050565b67ffffffffffffffff831115613c1d57613c1d613416565b613c3183613c2b8354613a6d565b83613bb7565b6000601f841160018114613c835760008515613c4d5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355613d19565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613cd25786850135825560209485019460019092019101613cb2565b5086821015613d0d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60006fffffffffffffffffffffffffffffffff808716835260606020840152613d4d6060840186886139ae565b915080841660408401525095945050505050565b815167ffffffffffffffff811115613d7b57613d7b613416565b613d8f81613d898454613a6d565b84613bb7565b602080601f831160018114613de25760008415613dac5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613bfd565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613e2f57888601518255948401946001909101908401613e10565b5085821015613e6b57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613e8f6040830185876139ae565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152949350505050565b61ffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201526000613ef46080830184613308565b9695505050505050565b61ffff8716815260e060208201526000613f1b60e0830188613308565b8660408401528281036060840152613f338187613308565b6080840195909552505080830360a08201526000835260c0015260200194935050505056fea2646970667358221220e8a16f1c2d4f4e5c1c82f9497069eecb36baae9afdc18cde8b38f082e9d4a62564736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101a55760003560e01c8063b187bd26116100e1578063e2f273bd1161008a578063eb20dabf11610064578063eb20dabf1461056d578063f67db96b1461058d578063f851a440146105d3578063faaebd211461060557600080fd5b8063e2f273bd1461050d578063e45da5261461052d578063ea8c4bcf1461054d57600080fd5b8063c34c08e5116100bb578063c34c08e514610490578063ce4ea09f146104bd578063e22fe72f146104dd57600080fd5b8063b187bd261461040d578063b3c276e214610450578063bac9e1b71461047057600080fd5b80633f4ba83a1161014e5780635f7ebb05116101285780635f7ebb051461032f5780638456cb591461034f5780638497e666146103645780639fd0506d146103e057600080fd5b80633f4ba83a146102d857806346904840146102ed578063554bab3c1461030f57600080fd5b80632079b5a91161017f5780632079b5a91461024a5780632156d4211461026a57806327e235e31461029d57600080fd5b806303eadcfc146101b15780630bab6053146102085780631c47ae5e1461022a57600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506003546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561021457600080fd5b5061022861022336600461312c565b610632565b005b34801561023657600080fd5b5061022861024536600461317a565b6106f8565b34801561025657600080fd5b5061022861026536600461322d565b61081a565b34801561027657600080fd5b5061028a6102853660046132d1565b611091565b6040516101ff979695949392919061336c565b3480156102a957600080fd5b506102ca6102b83660046133c4565b600b6020526000908152604090205481565b6040519081526020016101ff565b3480156102e457600080fd5b50610228611187565b3480156102f957600080fd5b506103026112eb565b6040516101ff91906133e8565b34801561031b57600080fd5b5061022861032a3660046133c4565b611379565b34801561033b57600080fd5b5061022861034a3660046133fb565b61151c565b34801561035b57600080fd5b5061022861162b565b34801561037057600080fd5b506103bf61037f366004613445565b600760209081526000928352604090922081518083018401805192815290840192909301919091209152546fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ff565b3480156103ec57600080fd5b506001546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041957600080fd5b50600054610440907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101ff565b34801561045c57600080fd5b5061022861046b366004613525565b6117a2565b34801561047c57600080fd5b5061022861048b3660046135bc565b611ad1565b34801561049c57600080fd5b506004546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c957600080fd5b506102286104d8366004613621565b611ccc565b3480156104e957600080fd5b506104406104f83660046136d7565b60066020526000908152604090205460ff1681565b34801561051957600080fd5b506102286105283660046133c4565b612013565b34801561053957600080fd5b506102286105483660046136f2565b6121c0565b34801561055957600080fd5b506102286105683660046133c4565b612293565b34801561057957600080fd5b50610228610588366004613734565b612978565b34801561059957600080fd5b506001546105c09074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020016101ff565b3480156105df57600080fd5b506000546101de90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561061157600080fd5b506102ca6106203660046133c4565b600a6020526000908152604090205481565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146106bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b604080518281523360208201527fcff96c14f90d679c9b2edb1cd5b9990824d3083f97ade84c79539884ca33fc02910160405180910390a150565b600054610100900473ffffffffffffffffffffffffffffffffffffffff16331461077e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b604080516fffffffffffffffffffffffffffffffff841681523360208201527fcd8ca9842747d8162878825088ab13c89199cba4f7f23889db839b92328ef815910160405180910390a16fffffffffffffffffffffffffffffffff91909116600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60085460ff1615610887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b0000000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000547501000000000000000000000000000000000000000000900460ff1615610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60005460ff166109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8816610a21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f756e6176616c6961626c6520746f6b656e00000000000000000000000000000060448201526064016106b4565b61ffff861660009081526006602052604090205460ff16610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f657865637574696f6e20636861696e2069732064697361626c6500000000000060448201526064016106b4565b61ffff8616600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290206005015460ff16610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f6b656e2069732064697361626c656400000000000000000000000000000060448201526064016106b4565b61ffff8616600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152902060010154871015610be0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6c657373207468616e206d696e20616d6f756e7400000000000000000000000060448201526064016106b4565b6000610bed878a8a612fc7565b9050808811610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f666565206d6f7265207468616e20616d6f756e7400000000000000000000000060448201526064016106b4565b8088039750818811610cc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f676173736c65737320726577617264206d6f7265207468616e20616d6f756e7460448201526064016106b4565b61ffff87166000908152600760205260408082209051620f42409190610cef9088908890613786565b90815260405190819003602001902054610d1b906fffffffffffffffffffffffffffffffff16846137c5565b610d2591906137e2565b9050610d31818361381d565b73ffffffffffffffffffffffffffffffffffffffff8b166000908152600a602052604081208054909190610d66908490613830565b90915550610d769050818a613830565b73ffffffffffffffffffffffffffffffffffffffff8b166000908152600b602052604081208054909190610dab90849061381d565b92505081905550600060068b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e259190613843565b610e2f9190613866565b610e3a90600a61399f565b90507f846d48b5dad0cf4233578e8b84dff2bb1f49f5ef280b0a5abf783b1d06aeb4cc898c8c8b8b898c8c8a610e70818e61381d565b604051610e869a999897969594939291906139f7565b60405180910390a1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7b2831e8a600960008d61ffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848e610f4291906137e2565b8c8c610f4e888c6137e2565b8d8d610f5a8b8d6137e2565b6040518a63ffffffff1660e01b8152600401610f7e99989796959493929190613ac0565b600060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff166379cc679033858d610fd99190613830565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050505050505050505050565b60096020908152600092835260408084209091529082529020805481906110b790613a6d565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613a6d565b80156111305780601f1061110557610100808354040283529160200191611130565b820191906000526020600020905b81548152906001019060200180831161111357829003601f168201915b50505060018401546002850154600386015460048701546005909701549596929591945092506fffffffffffffffffffffffffffffffff808316927001000000000000000000000000000000009004169060ff1687565b6000547501000000000000000000000000000000000000000000900460ff1661120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207061757365640000000000000000000000000000000000000000000060448201526064016106b4565b60015473ffffffffffffffffffffffffffffffffffffffff16331461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c792070617573657200000000000000000000000000000000000000000060448201526064016106b4565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b600280546112f890613a6d565b80601f016020809104026020016040519081016040528092919081815260200182805461132490613a6d565b80156113715780601f1061134657610100808354040283529160200191611371565b820191906000526020600020905b81548152906001019060200180831161135457829003601f168201915b505050505081565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146113ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff811661147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b6001546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f9b3d82621a55ae56941a49b01b3111acf42e49f89b2af1a6dea8fb9886d3520c9181900360600190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b6040805161ffff831681523360208201527fa3f2d453e9999c008b07f10a428e6a33ce8dd4b9423bef99ff9cd579cedfb8b5910160405180910390a16001805461ffff90921674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000547501000000000000000000000000000000000000000000900460ff16156116b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60015473ffffffffffffffffffffffffffffffffffffffff163314611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c792070617573657200000000000000000000000000000000000000000060448201526064016106b4565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016112e1565b60005460ff161561180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a65640000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff871661188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8616611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8216611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b600180547fffffffffffffffffffff00000000000000000000000000000000000000000000167401000000000000000000000000000000000000000061ffff8816027fffffffffffffffffffffffff0000000000000000000000000000000000000000161773ffffffffffffffffffffffffffffffffffffffff8916908117909155600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101009092029190911790556002611a47848683613c05565b506003805473ffffffffffffffffffffffffffffffffffffffff9788167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600480549390971692169190911790945550505060055550600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b62030d40816fffffffffffffffffffffffffffffffff161115611b7957600080fd5b6fffffffffffffffffffffffffffffffff841660009081526006602052604090205460ff16611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f657865637574696f6e20636861696e2069732064697361626c6500000000000060448201526064016106b4565b7f933e13f2c0174ad6202905ed6eb73212911941c4fb8daf560b05445099b52e2784848484604051611c399493929190613d20565b60405180910390a16fffffffffffffffffffffffffffffffff8416600090815260076020526040908190209051829190611c769086908690613786565b90815260405190819003602001902080546fffffffffffffffffffffffffffffffff929092167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117905550505050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8916611dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b801580611e515750600660ff168973ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b9190613843565b60ff1610155b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c696420746f6b656e20646563696d616c730000000000000000000060448201526064016106b4565b6040518060e0016040528089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505060208083018a905260408084018a9052606084018990526fffffffffffffffffffffffffffffffff8089166080860152871660a085015285151560c09094019390935261ffff8e1682526009815282822073ffffffffffffffffffffffffffffffffffffffff8e16835290522081518190611f759082613d61565b50602082015160018201556040820151600282015560608201516003820155608082015160a08301516fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002911617600482015560c090910151600590910180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905550505050505050505050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314612099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8116612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b6000546040805133815273ffffffffffffffffffffffffffffffffffffffff6101009093048316602082015291831682820152517f9f6130d220a6021d90d78c7ed17b7cfb79f530974405b174fef75f671205513c9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106b4565b7f212215b14b6f95abef8735f1a53e5383ebe2be1b7767190b1429c167e9b55a3182823360405161227993929190613e7b565b60405180910390a1600261228e828483613c05565b505050565b60085460ff1615612300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b0000000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000547501000000000000000000000000000000000000000000900460ff16156123b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60005460ff1661241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016106b4565b60015474010000000000000000000000000000000000000000900461ffff1660008181526006602052604090205460ff166124b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f636861696e2069732064697361626c650000000000000000000000000000000060448201526064016106b4565b61ffff8116600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152808220815160e0810190925280548290829061250190613a6d565b80601f016020809104026020016040519081016040528092919081815260200182805461252d90613a6d565b801561257a5780601f1061254f5761010080835404028352916020019161257a565b820191906000526020600020905b81548152906001019060200180831161255d57829003601f168201915b505050918352505060018201546020820152600282015460408201526003820154606082015260048201546fffffffffffffffffffffffffffffffff80821660808401527001000000000000000000000000000000009091041660a082015260059091015460ff16151560c091820152810151909150612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f6b656e2069732064697361626c656400000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020908152604090912054908201518110156126ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6c657373207468616e206d696e20616d6f756e7400000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604081208054839290612721908490613830565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000818152600a602090815260408083209290925581517f313ce56700000000000000000000000000000000000000000000000000000000815291516006939263313ce5679260048083019391928290030181865afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c89190613843565b6127d29190613866565b6127dd90600a61399f565b6127e790826137e2565b90506000600280546127f890613a6d565b80601f016020809104026020016040519081016040528092919081815260200182805461282490613a6d565b80156128715780601f1061284657610100808354040283529160200191612871565b820191906000526020600020905b81548152906001019060200180831161285457829003601f168201915b505050505090507fa5baec630f25dd3f696ae19213123aad0ca2dbade68c69d86cbef9501b740289848684846040516128ad9493929190613eb5565b60405180910390a160035483516040517fd7b2831e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163d7b2831e9161291791889190879087906000908190600401613efe565b600060405180830381600087803b15801561293157600080fd5b505af1158015612945573d6000803e3d6000fd5b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050505050565b60085460ff16156129e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b0000000000000000000000000000000000000000000060448201526064016106b4565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000547501000000000000000000000000000000000000000000900460ff1615612a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016106b4565b60005460ff16612b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a6564000000000000000000000000000000000060448201526064016106b4565b60045473ffffffffffffffffffffffffffffffffffffffff163314612b83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6f6e6c79206578656375746f720000000000000000000000000000000000000060448201526064016106b4565b73ffffffffffffffffffffffffffffffffffffffff8416612c00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2061646472657373000000000000000000000000000000000000000060448201526064016106b4565b8460055414612c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c792063616c6c657220636f6e747261637400000000000000000000000060448201526064016106b4565b600060068573ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cde9190613843565b612ce89190613866565b612cf390600a61399f565b9050612cff81846137c5565b9250612d0b81836137c5565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600b6020526040812080549294508592909190612d45908490613830565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff8781168252602082018690528616818301526060810184905232608082015290517f4c50a49b21c655b6eaa46cdcaeb12823f639494624bf1b241628ed46e6ea69ca9181900360a00190a1600082118015612dd4575073ffffffffffffffffffffffffffffffffffffffff84163214155b15612f0e5773ffffffffffffffffffffffffffffffffffffffff85166340c10f1985612e00858761381d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b158015612e6b57600080fd5b505af1158015612e7f573d6000803e3d6000fd5b50506040517f40c10f190000000000000000000000000000000000000000000000000000000081523260048201526024810185905273ffffffffffffffffffffffffffffffffffffffff881692506340c10f199150604401600060405180830381600087803b158015612ef157600080fd5b505af1158015612f05573d6000803e3d6000fd5b50505050612f97565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528616906340c10f1990604401600060405180830381600087803b158015612f7e57600080fd5b505af1158015612f92573d6000803e3d6000fd5b505050505b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050565b61ffff8316600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812060030154819083116130565761ffff8516600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529020600401546fffffffffffffffffffffffffffffffff166130b5565b61ffff8516600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290206004015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050620f42406130d76fffffffffffffffffffffffffffffffff8316856137c5565b6130e191906137e2565b61ffff8616600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff891684529091529020600201546131239190613830565b95945050505050565b60006020828403121561313e57600080fd5b5035919050565b80356fffffffffffffffffffffffffffffffff8116811461316557600080fd5b919050565b8035801515811461316557600080fd5b6000806040838503121561318d57600080fd5b61319683613145565b91506131a46020840161316a565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146131cf57600080fd5b50565b803561ffff8116811461316557600080fd5b60008083601f8401126131f657600080fd5b50813567ffffffffffffffff81111561320e57600080fd5b60208301915083602082850101111561322657600080fd5b9250929050565b60008060008060008060008060c0898b03121561324957600080fd5b8835613254816131ad565b97506020890135965061326960408a016131d2565b9550606089013567ffffffffffffffff8082111561328657600080fd5b6132928c838d016131e4565b909750955060808b01359150808211156132ab57600080fd5b506132b88b828c016131e4565b999c989b50969995989497949560a00135949350505050565b600080604083850312156132e457600080fd5b6132ed83613145565b915060208301356132fd816131ad565b809150509250929050565b6000815180845260005b8181101561332e57602081850181015186830182015201613312565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60e08152600061337f60e083018a613308565b602083019890985250604081019590955260608501939093526fffffffffffffffffffffffffffffffff91821660808501521660a0830152151560c090910152919050565b6000602082840312156133d657600080fd5b81356133e1816131ad565b9392505050565b6020815260006133e16020830184613308565b60006020828403121561340d57600080fd5b6133e1826131d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561345857600080fd5b61346183613145565b9150602083013567ffffffffffffffff8082111561347e57600080fd5b818501915085601f83011261349257600080fd5b8135818111156134a4576134a4613416565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156134ea576134ea613416565b8160405282815288602084870101111561350357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080600080600060c0888a03121561354057600080fd5b873561354b816131ad565b9650602088013561355b816131ad565b9550613569604089016131d2565b9450606088013567ffffffffffffffff81111561358557600080fd5b6135918a828b016131e4565b90955093505060808801356135a5816131ad565b8092505060a0880135905092959891949750929550565b600080600080606085870312156135d257600080fd5b6135db85613145565b9350602085013567ffffffffffffffff8111156135f757600080fd5b613603878288016131e4565b9094509250613616905060408601613145565b905092959194509250565b6000806000806000806000806000806101208b8d03121561364157600080fd5b61364a8b6131d2565b995060208b013561365a816131ad565b985060408b013567ffffffffffffffff81111561367657600080fd5b6136828d828e016131e4565b90995097505060608b0135955060808b0135945060a08b013593506136a960c08c01613145565b92506136b760e08c01613145565b91506136c66101008c0161316a565b90509295989b9194979a5092959850565b6000602082840312156136e957600080fd5b6133e182613145565b6000806020838503121561370557600080fd5b823567ffffffffffffffff81111561371c57600080fd5b613728858286016131e4565b90969095509350505050565b600080600080600060a0868803121561374c57600080fd5b85359450602086013561375e816131ad565b9350604086013561376e816131ad565b94979396509394606081013594506080013592915050565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176137dc576137dc613796565b92915050565b600082613818577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156137dc576137dc613796565b808201808211156137dc576137dc613796565b60006020828403121561385557600080fd5b815160ff811681146133e157600080fd5b60ff82811682821603908111156137dc576137dc613796565b600181815b808511156138d857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138be576138be613796565b808516156138cb57918102915b93841c9390800290613884565b509250929050565b6000826138ef575060016137dc565b816138fc575060006137dc565b8160018114613912576002811461391c57613938565b60019150506137dc565b60ff84111561392d5761392d613796565b50506001821b6137dc565b5060208310610133831016604e8410600b841016171561395b575081810a6137dc565b613965838361387f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561399757613997613796565b029392505050565b60006133e160ff8416836138e0565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010061ffff8d16835273ffffffffffffffffffffffffffffffffffffffff8c1660208401528a6040840152806060840152613a388184018a8c6139ae565b905087608084015282810360a0840152613a538187896139ae565b60c0840195909552505060e0015298975050505050505050565b600181811c90821680613a8157607f821691505b602082108103613aba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b61ffff8a16815260e060208201526000808a54613adc81613a6d565b8060e0860152610100600180841660008114613aff5760018114613b3757613b67565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550613b67565b8f600052602060002060005b85811015613b5f5781548a820186015290830190602001613b43565b890184019650505b50505050508960408401528281036060840152613b8581898b6139ae565b905086608084015282810360a0840152613ba08186886139ae565b9150508260c08301529a9950505050505050505050565b601f82111561228e57600081815260208120601f850160051c81016020861015613bde5750805b601f850160051c820191505b81811015613bfd57828155600101613bea565b505050505050565b67ffffffffffffffff831115613c1d57613c1d613416565b613c3183613c2b8354613a6d565b83613bb7565b6000601f841160018114613c835760008515613c4d5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355613d19565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613cd25786850135825560209485019460019092019101613cb2565b5086821015613d0d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60006fffffffffffffffffffffffffffffffff808716835260606020840152613d4d6060840186886139ae565b915080841660408401525095945050505050565b815167ffffffffffffffff811115613d7b57613d7b613416565b613d8f81613d898454613a6d565b84613bb7565b602080601f831160018114613de25760008415613dac5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613bfd565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613e2f57888601518255948401946001909101908401613e10565b5085821015613e6b57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613e8f6040830185876139ae565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152949350505050565b61ffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201526000613ef46080830184613308565b9695505050505050565b61ffff8716815260e060208201526000613f1b60e0830188613308565b8660408401528281036060840152613f338187613308565b6080840195909552505080830360a08201526000835260c0015260200194935050505056fea2646970667358221220e8a16f1c2d4f4e5c1c82f9497069eecb36baae9afdc18cde8b38f082e9d4a62564736f6c63430008120033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
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.