Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
12,721,144,001.597342979123449384 VCXTR
Holders
168
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
67,551,004 VCXTRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
VCDividendTracker
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-29 */ // SPDX-License-Identifier: MIT pragma solidity ^0.7.6; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } 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) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } 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) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } 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 ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() external view virtual override returns (string memory) { return _name; } function symbol() external view virtual override returns (string memory) { return _symbol; } function decimals() external view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) external view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } interface DividendPayingTokenInterface { function dividendOf(address _owner) external view returns (uint256); function distributeDividends() external payable; function withdrawDividend() external; event DividendsDistributed(address indexed from, uint256 weiAmount); event DividendWithdrawn(address indexed to, uint256 weiAmount); } interface DividendPayingTokenOptionalInterface { function withdrawableDividendOf(address _owner) external view returns (uint256); function withdrawnDividendOf(address _owner) external view returns (uint256); function accumulativeDividendOf(address _owner) external view returns (uint256); } contract DividendPayingToken is ERC20, DividendPayingTokenInterface, DividendPayingTokenOptionalInterface { using SafeMath for uint256; using SafeMathUint for uint256; using SafeMathInt for int256; uint256 internal constant ONE = 10**18; uint256 internal constant MAGNITUDE = 2**128; uint256 internal magnifiedDividendPerShare; mapping(address => int256) internal magnifiedDividendCorrections; mapping(address => uint256) internal withdrawnDividends; uint256 public totalDividendsDistributed; constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} receive() external payable { distributeDividends(); } /** * @dev function requires sending ethereum * @dev Magnified divident per share will be 0 on the time of deployement */ function distributeDividends() public payable override { require(totalSupply() > 0); if (msg.value > 0) { magnifiedDividendPerShare = magnifiedDividendPerShare.add( (msg.value).mul(MAGNITUDE) / totalSupply() ); emit DividendsDistributed(msg.sender, msg.value); totalDividendsDistributed = totalDividendsDistributed.add( msg.value ); } } function withdrawDividend() external virtual override { _withdrawDividendOfUser(payable(msg.sender)); } function _withdrawDividendOfUser(address payable user) internal returns (uint256) { uint256 _withdrawableDividend = withdrawableDividendOf(user); if (_withdrawableDividend > 0) { emit DividendWithdrawn(user, _withdrawableDividend); withdrawnDividends[user] = withdrawnDividends[user].add( _withdrawableDividend ); (bool success, ) = user.call{ value: _withdrawableDividend, gas: 3000 }(""); if (!success) { withdrawnDividends[user] = withdrawnDividends[user].sub( _withdrawableDividend ); } else { return 0; } return _withdrawableDividend; } return 0; } function dividendOf(address _owner) external view override returns (uint256) { return withdrawableDividendOf(_owner); } function withdrawableDividendOf(address _owner) public view override returns (uint256) { return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); } function withdrawnDividendOf(address _owner) external view override returns (uint256) { return withdrawnDividends[_owner]; } function accumulativeDividendOf(address _owner) public view override returns (uint256) { return magnifiedDividendPerShare .mul(balanceOf(_owner)) .toInt256Safe() .add(magnifiedDividendCorrections[_owner]) .toUint256Safe() / MAGNITUDE; } function _mint(address account, uint256 value) internal override { super._mint(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } function _burn(address account, uint256 value) internal override { super._burn(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } function _setBalance(address account, uint256 newBalance) internal { uint256 currentBalance = balanceOf(account); if (newBalance > currentBalance) { uint256 mintAmount = newBalance.sub(currentBalance); _mint(account, mintAmount); } else if (newBalance < currentBalance) { uint256 burnAmount = currentBalance.sub(newBalance); _burn(account, burnAmount); } } } contract VCDividendTracker is Context, DividendPayingToken { using SafeMath for uint256; using SafeMathInt for int256; mapping(address => bool) isDividendHolder; mapping(address => bool) public excludedFromDividends; mapping(address => uint256) public lastClaimTimes; mapping(address => bool) private isOwner; uint256 public claimWait; uint256 internal numDividendTokenHolders; uint256 public minimumTokenBalanceForDividends; modifier onlyOwners() { require(isOwner[_msgSender()], "Ownable: caller is not the owner"); _; } event ExcludeFromDividends(address indexed account); event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); event minimumTokenBalanceUpdated( uint256 indexed newValue, uint256 indexed oldValue ); event Claim( address indexed account, uint256 amount, bool indexed automatic ); event OwnershipSet(address indexed account, bool indexed vaule); constructor() DividendPayingToken("VCX_Rewards_Tracker", "VCXTR") { isOwner[_msgSender()] = true; isOwner[tx.origin] = true; emit OwnershipSet(_msgSender(), true); emit OwnershipSet(tx.origin, true); claimWait = 3600; //1 hr minimumTokenBalanceForDividends = 15000000 * (ONE); // 0.0555% } function setOwnership(address _owner, bool _value) external onlyOwners { require( isOwner[_owner] != _value, "Ownership: role is already set to this value" ); isOwner[_owner] = _value; emit OwnershipSet(_owner, _value); } function checkOwnership(address _owner) external view returns (bool) { return isOwner[_owner]; } function _approve( address, address, uint256 ) internal pure override { require( false, "Viral_Dividend_Tracker: Token is not transferable, no need to approve" ); } function _transfer( address, address, uint256 ) internal pure override { require(false, "Viral_Dividend_Tracker: No transfers allowed"); } function withdrawDividend() external pure override { require( false, "Viral_Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main VIRAL contract." ); } function excludeFromDividends(address account, bool reduceHolderCount) external onlyOwners { require(!excludedFromDividends[account], "Account already excluded"); excludedFromDividends[account] = true; _setBalance(account, 0); if (reduceHolderCount) { if (isDividendHolder[account]) { isDividendHolder[account] = false; numDividendTokenHolders = numDividendTokenHolders.sub(1); } } emit ExcludeFromDividends(account); } function updateClaimWait(uint256 newClaimWait) external onlyOwners { require( newClaimWait >= 3600 && newClaimWait <= 86400, "Viral_Dividend_Tracker: claimWait must be updated to between 1 and 24 hours" ); require( newClaimWait != claimWait, "Viral_Dividend_Tracker: Cannot update claimWait to same value" ); emit ClaimWaitUpdated(newClaimWait, claimWait); claimWait = newClaimWait; } function updateMinimumToken(uint256 newMinimumToken) external onlyOwners { require( newMinimumToken >= 1, "Viral_Dividend_Tracker: newMinimumToken more 1 token" ); emit minimumTokenBalanceUpdated( newMinimumToken, minimumTokenBalanceForDividends ); minimumTokenBalanceForDividends = newMinimumToken.mul(ONE); } function getNumberOfTokenHolders() external view returns (uint256) { return numDividendTokenHolders; } function getAccount(address _account) external view returns ( address account, uint256 withdrawableDividends, uint256 totalDividends, uint256 lastClaimTime, uint256 nextClaimTime, uint256 secondsUntilAutoClaimAvailable ) { account = _account; withdrawableDividends = withdrawableDividendOf(account); totalDividends = accumulativeDividendOf(account); lastClaimTime = lastClaimTimes[account]; nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : block.timestamp; secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp ? nextClaimTime.sub(block.timestamp) : 0; } function setBalance(address payable account, uint256 newBalance) external onlyOwners { if (excludedFromDividends[account]) { return; } if (newBalance >= minimumTokenBalanceForDividends) { _setBalance(account, newBalance); if (!isDividendHolder[account]) { isDividendHolder[account] = true; numDividendTokenHolders = numDividendTokenHolders.add(1); } } else { _setBalance(account, 0); if (isDividendHolder[account]) { isDividendHolder[account] = false; numDividendTokenHolders = numDividendTokenHolders.sub(1); } } } function processAccount(address payable account, bool automatic) external onlyOwners returns (bool) { require( claimWait + lastClaimTimes[account] < block.timestamp, "Viral_Dividend_Tracker: please wait for another claim" ); uint256 amount = _withdrawDividendOfUser(account); if (amount > 0) { lastClaimTimes[account] = block.timestamp; emit Claim(account, amount, automatic); return true; } return false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"ClaimWaitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"DividendWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"DividendsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"vaule","type":"bool"}],"name":"OwnershipSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"minimumTokenBalanceUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"accumulativeDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"checkOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeDividends","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"dividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduceHolderCount","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccount","outputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"withdrawableDividends","type":"uint256"},{"internalType":"uint256","name":"totalDividends","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"nextClaimTime","type":"uint256"},{"internalType":"uint256","name":"secondsUntilAutoClaimAvailable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokenBalanceForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"bool","name":"automatic","type":"bool"}],"name":"processAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"setBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newClaimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinimumToken","type":"uint256"}],"name":"updateMinimumToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawDividend","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"withdrawnDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604080518082018252601381527f5643585f526577617264735f547261636b6572000000000000000000000000006020808301918252835180850190945260058452642b21ac2a2960d91b90840152815191929183918391620000789160039162000156565b5080516200008e90600490602084019062000156565b50505050506001600c6000620000a96200015260201b60201c565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055328152600c909252902080549091166001908117909155620000f662000152565b6001600160a01b031660008051602062001fb083398151915260405160405180910390a3604051600190329060008051602062001fb083398151915290600090a3610e10600d556a0c685fa11e01ec6f000000600f5562000202565b3390565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200018e5760008555620001d9565b82601f10620001a957805160ff1916838001178555620001d9565b82800160010185558215620001d9579182015b82811115620001d9578251825591602001919060010190620001bc565b50620001e7929150620001eb565b5090565b5b80821115620001e75760008155600101620001ec565b611d9e80620002126000396000f3fe60806040526004361061016c5760003560e01c806303c83302146101805780630483f7a01461018857806306fdde03146101c3578063095ea7b31461024d57806309bbedde1461029a5780630c8b234e146102c157806318160ddd146102f45780631fa71a3b14610309578063226cfa3d1461033357806323b872dd1461036657806327ce0147146103a9578063313ce567146103dc57806339509351146104075780634e7b827f146104405780636a474002146104735780636f2789ec1461048857806370a082311461049d57806385a6b3ae146104d057806391b89fba146104e557806395d89b4114610518578063a457c2d71461052d578063a8b9d24014610566578063a9059cbb14610599578063aafd847a146105d2578063adf4849014610605578063bc4c4b3714610640578063be10b6141461067b578063dd62ed3e14610690578063e30443bc146106cb578063e98030c714610704578063fbcbc0f11461072e5761017b565b3661017b5761017961079e565b005b600080fd5b61017961079e565b34801561019457600080fd5b50610179600480360360408110156101ab57600080fd5b506001600160a01b038135169060200135151561082f565b3480156101cf57600080fd5b506101d86109bf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102125781810151838201526020016101fa565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025957600080fd5b506102866004803603604081101561027057600080fd5b506001600160a01b038135169060200135610a55565b604080519115158252519081900360200190f35b3480156102a657600080fd5b506102af610a73565b60408051918252519081900360200190f35b3480156102cd57600080fd5b50610286600480360360208110156102e457600080fd5b50356001600160a01b0316610a79565b34801561030057600080fd5b506102af610a9b565b34801561031557600080fd5b506101796004803603602081101561032c57600080fd5b5035610aa1565b34801561033f57600080fd5b506102af6004803603602081101561035657600080fd5b50356001600160a01b0316610b8f565b34801561037257600080fd5b506102866004803603606081101561038957600080fd5b506001600160a01b03813581169160208101359091169060400135610ba1565b3480156103b557600080fd5b506102af600480360360208110156103cc57600080fd5b50356001600160a01b0316610c28565b3480156103e857600080fd5b506103f1610c85565b6040805160ff9092168252519081900360200190f35b34801561041357600080fd5b506102866004803603604081101561042a57600080fd5b506001600160a01b038135169060200135610c8a565b34801561044c57600080fd5b506102866004803603602081101561046357600080fd5b50356001600160a01b0316610cd8565b34801561047f57600080fd5b50610179610ced565b34801561049457600080fd5b506102af610d24565b3480156104a957600080fd5b506102af600480360360208110156104c057600080fd5b50356001600160a01b0316610d2a565b3480156104dc57600080fd5b506102af610d45565b3480156104f157600080fd5b506102af6004803603602081101561050857600080fd5b50356001600160a01b0316610d4b565b34801561052457600080fd5b506101d8610d56565b34801561053957600080fd5b506102866004803603604081101561055057600080fd5b506001600160a01b038135169060200135610db7565b34801561057257600080fd5b506102af6004803603602081101561058957600080fd5b50356001600160a01b0316610e1f565b3480156105a557600080fd5b50610286600480360360408110156105bc57600080fd5b506001600160a01b038135169060200135610e4b565b3480156105de57600080fd5b506102af600480360360208110156105f557600080fd5b50356001600160a01b0316610e5f565b34801561061157600080fd5b506101796004803603604081101561062857600080fd5b506001600160a01b0381351690602001351515610e7a565b34801561064c57600080fd5b506102866004803603604081101561066357600080fd5b506001600160a01b0381351690602001351515610f94565b34801561068757600080fd5b506102af6110d4565b34801561069c57600080fd5b506102af600480360360408110156106b357600080fd5b506001600160a01b03813581169160200135166110da565b3480156106d757600080fd5b50610179600480360360408110156106ee57600080fd5b506001600160a01b038135169060200135611105565b34801561071057600080fd5b506101796004803603602081101561072757600080fd5b5035611263565b34801561073a57600080fd5b506107616004803603602081101561075157600080fd5b50356001600160a01b031661138f565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b60006107a8610a9b565b116107b257600080fd5b341561082d576107e36107c3610a9b565b6107d134600160801b611406565b816107d857fe5b600554919004611466565b60055560408051348152905133917fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511919081900360200190a26008546108299034611466565b6008555b565b600c600061083b6114be565b6001600160a01b0316815260208101919091526040016000205460ff16610897576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff1615610900576040805162461bcd60e51b81526020600482015260186024820152771058d8dbdd5b9d08185b1c9958591e48195e18db1d59195960421b604482015290519081900360640190fd5b6001600160a01b0382166000908152600a60205260408120805460ff1916600117905561092e9083906114c2565b8015610987576001600160a01b03821660009081526009602052604090205460ff1615610987576001600160a01b0382166000908152600960205260409020805460ff19169055600e5461098390600161151c565b600e555b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b5050505050905090565b6000610a69610a626114be565b848461155e565b5060015b92915050565b600e5490565b6001600160a01b0381166000908152600c602052604090205460ff165b919050565b60025490565b600c6000610aad6114be565b6001600160a01b0316815260208101919091526040016000205460ff16610b09576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001811015610b495760405162461bcd60e51b8152600401808060200182810382526034815260200180611aa56034913960400191505060405180910390fd5b600f5460405182907f9c9571fb23d65fec0768248b245e0bee0cd9e9036a4a9f9e8e417eb15188678590600090a3610b8981670de0b6b3a7640000611406565b600f5550565b600b6020526000908152604090205481565b6000610bae848484611595565b610c1e84610bba6114be565b610c1985604051806060016040528060288152602001611bb9602891396001600160a01b038a16600090815260016020526040812090610bf86114be565b6001600160a01b0316815260208101919091526040016000205491906115cc565b61155e565b5060019392505050565b6001600160a01b038116600090815260066020526040812054600160801b90610c7790610c7290610c6c610c67610c5e88610d2a565b60055490611406565b611663565b90611673565b6116a6565b81610c7e57fe5b0492915050565b601290565b6000610a69610c976114be565b84610c198560016000610ca86114be565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611466565b600a6020526000908152604090205460ff1681565b60405162461bcd60e51b8152600401808060200182810382526067815260200180611ad96067913960800191505060405180910390fd5b600d5481565b6001600160a01b031660009081526020819052604090205490565b60085481565b6000610a6d82610e1f565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b6000610a69610dc46114be565b84610c1985604051806060016040528060258152602001611d446025913960016000610dee6114be565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906115cc565b6001600160a01b038116600090815260076020526040812054610a6d90610e4584610c28565b9061151c565b6000610a69610e586114be565b8484611595565b6001600160a01b031660009081526007602052604090205490565b600c6000610e866114be565b6001600160a01b0316815260208101919091526040016000205460ff16610ee2576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff1615158115151415610f405760405162461bcd60e51b815260040180806020018281038252602c815260200180611b40602c913960400191505060405180910390fd5b6001600160a01b0382166000818152600c6020526040808220805460ff191685151590811790915590519092917f8ae3029208fd6692a475f09e97b7a86f7993f1eb5e1edb563554aebc2883860291a35050565b6000600c6000610fa26114be565b6001600160a01b0316815260208101919091526040016000205460ff16610ffe576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0383166000908152600b6020526040902054600d54429101106110595760405162461bcd60e51b8152600401808060200182810382526035815260200180611d0f6035913960400191505060405180910390fd5b6000611064846116b9565b905080156110ca576001600160a01b0384166000818152600b60209081526040918290204290558151848152915186151593927fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09292908290030190a36001915050610a6d565b5060009392505050565b600f5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600c60006111116114be565b6001600160a01b0316815260208101919091526040016000205460ff1661116d576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff16156111935761125f565b600f548110611201576111a682826114c2565b6001600160a01b03821660009081526009602052604090205460ff166111fc576001600160a01b0382166000908152600960205260409020805460ff19166001908117909155600e546111f891611466565b600e555b61125f565b61120c8260006114c2565b6001600160a01b03821660009081526009602052604090205460ff161561125f576001600160a01b0382166000908152600960205260409020805460ff19169055600e5461125b90600161151c565b600e555b5050565b600c600061126f6114be565b6001600160a01b0316815260208101919091526040016000205460ff166112cb576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b610e1081101580156112e05750620151808111155b61131b5760405162461bcd60e51b815260040180806020018281038252604b815260200180611c01604b913960600191505060405180910390fd5b600d5481141561135c5760405162461bcd60e51b815260040180806020018281038252603d815260200180611c8d603d913960400191505060405180910390fd5b600d5460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3600d55565b8060008080808061139f86610e1f565b94506113aa86610c28565b6001600160a01b0387166000908152600b60205260409020549094509250826113d357426113e1565b600d546113e1908490611466565b91504282116113f15760006113fb565b6113fb824261151c565b905091939550919395565b60008261141557506000610a6d565b8282028284828161142257fe5b041461145f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b6c6021913960400191505060405180910390fd5b9392505050565b60008282018381101561145f576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b3390565b60006114cd83610d2a565b9050808211156114f55760006114e3838361151c565b90506114ef84826117f8565b50611517565b80821015611517576000611509828461151c565b9050611515848261185c565b505b505050565b600061145f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115cc565b60405162461bcd60e51b8152600401808060200182810382526045815260200180611cca6045913960600191505060405180910390fd5b60405162461bcd60e51b815260040180806020018281038252602c815260200180611b8d602c913960400191505060405180910390fd5b6000818484111561165b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611620578181015183820152602001611608565b50505050905090810190601f16801561164d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008181811215610a6d57600080fd5b60008282018183128015906116885750838112155b8061169d575060008312801561169d57508381125b61145f57600080fd5b6000808212156116b557600080fd5b5090565b6000806116c583610e1f565b905080156117ef576040805182815290516001600160a01b038516917fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d919081900360200190a26001600160a01b03831660009081526007602052604090205461172f9082611466565b6001600160a01b038416600081815260076020526040808220939093559151610bb890849084818181858888f193505050503d806000811461178d576040519150601f19603f3d011682016040523d82523d6000602084013e611792565b606091505b50509050806117dc576001600160a01b0384166000908152600760205260409020546117be908361151c565b6001600160a01b0385166000908152600760205260409020556117e7565b600092505050610a96565b509050610a96565b50600092915050565b61180282826118a0565b61183c61181d610c678360055461140690919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611972565b6001600160a01b0390921660009081526006602052604090209190915550565b61186682826119a4565b61183c611881610c678360055461140690919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611673565b6001600160a01b0382166118fb576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546119089082611466565b6002556001600160a01b03821660009081526020819052604090205461192e9082611466565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020611c4c8339815191529281900390910190a35050565b60008183038183128015906119875750838113155b8061169d575060008312801561169d575083811361145f57600080fd5b6001600160a01b0382166119e95760405162461bcd60e51b8152600401808060200182810382526021815260200180611c6c6021913960400191505060405180910390fd5b611a2681604051806060016040528060228152602001611a83602291396001600160a01b03851660009081526020819052604090205491906115cc565b6001600160a01b038316600090815260208190526040902055600254611a4c908261151c565b6002556040805182815290516000916001600160a01b03851691600080516020611c4c8339815191529181900360200190a3505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365566972616c5f4469766964656e645f547261636b65723a206e65774d696e696d756d546f6b656e206d6f7265203120746f6b656e566972616c5f4469766964656e645f547261636b65723a2077697468647261774469766964656e642064697361626c65642e20557365207468652027636c61696d272066756e6374696f6e206f6e20746865206d61696e20564952414c20636f6e74726163742e4f776e6572736869703a20726f6c6520697320616c72656164792073657420746f20746869732076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77566972616c5f4469766964656e645f547261636b65723a204e6f207472616e736665727320616c6c6f77656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572566972616c5f4469766964656e645f547261636b65723a20636c61696d57616974206d757374206265207570646174656420746f206265747765656e203120616e6420323420686f757273ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373566972616c5f4469766964656e645f547261636b65723a2043616e6e6f742075706461746520636c61696d5761697420746f2073616d652076616c7565566972616c5f4469766964656e645f547261636b65723a20546f6b656e206973206e6f74207472616e7366657261626c652c206e6f206e65656420746f20617070726f7665566972616c5f4469766964656e645f547261636b65723a20706c65617365207761697420666f7220616e6f7468657220636c61696d45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220482c4f0277340bdce4d150ffd2d0504b2f78f2c3ca2f80c1fc226afcb991828064736f6c634300070600338ae3029208fd6692a475f09e97b7a86f7993f1eb5e1edb563554aebc28838602
Deployed Bytecode
0x60806040526004361061016c5760003560e01c806303c83302146101805780630483f7a01461018857806306fdde03146101c3578063095ea7b31461024d57806309bbedde1461029a5780630c8b234e146102c157806318160ddd146102f45780631fa71a3b14610309578063226cfa3d1461033357806323b872dd1461036657806327ce0147146103a9578063313ce567146103dc57806339509351146104075780634e7b827f146104405780636a474002146104735780636f2789ec1461048857806370a082311461049d57806385a6b3ae146104d057806391b89fba146104e557806395d89b4114610518578063a457c2d71461052d578063a8b9d24014610566578063a9059cbb14610599578063aafd847a146105d2578063adf4849014610605578063bc4c4b3714610640578063be10b6141461067b578063dd62ed3e14610690578063e30443bc146106cb578063e98030c714610704578063fbcbc0f11461072e5761017b565b3661017b5761017961079e565b005b600080fd5b61017961079e565b34801561019457600080fd5b50610179600480360360408110156101ab57600080fd5b506001600160a01b038135169060200135151561082f565b3480156101cf57600080fd5b506101d86109bf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102125781810151838201526020016101fa565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025957600080fd5b506102866004803603604081101561027057600080fd5b506001600160a01b038135169060200135610a55565b604080519115158252519081900360200190f35b3480156102a657600080fd5b506102af610a73565b60408051918252519081900360200190f35b3480156102cd57600080fd5b50610286600480360360208110156102e457600080fd5b50356001600160a01b0316610a79565b34801561030057600080fd5b506102af610a9b565b34801561031557600080fd5b506101796004803603602081101561032c57600080fd5b5035610aa1565b34801561033f57600080fd5b506102af6004803603602081101561035657600080fd5b50356001600160a01b0316610b8f565b34801561037257600080fd5b506102866004803603606081101561038957600080fd5b506001600160a01b03813581169160208101359091169060400135610ba1565b3480156103b557600080fd5b506102af600480360360208110156103cc57600080fd5b50356001600160a01b0316610c28565b3480156103e857600080fd5b506103f1610c85565b6040805160ff9092168252519081900360200190f35b34801561041357600080fd5b506102866004803603604081101561042a57600080fd5b506001600160a01b038135169060200135610c8a565b34801561044c57600080fd5b506102866004803603602081101561046357600080fd5b50356001600160a01b0316610cd8565b34801561047f57600080fd5b50610179610ced565b34801561049457600080fd5b506102af610d24565b3480156104a957600080fd5b506102af600480360360208110156104c057600080fd5b50356001600160a01b0316610d2a565b3480156104dc57600080fd5b506102af610d45565b3480156104f157600080fd5b506102af6004803603602081101561050857600080fd5b50356001600160a01b0316610d4b565b34801561052457600080fd5b506101d8610d56565b34801561053957600080fd5b506102866004803603604081101561055057600080fd5b506001600160a01b038135169060200135610db7565b34801561057257600080fd5b506102af6004803603602081101561058957600080fd5b50356001600160a01b0316610e1f565b3480156105a557600080fd5b50610286600480360360408110156105bc57600080fd5b506001600160a01b038135169060200135610e4b565b3480156105de57600080fd5b506102af600480360360208110156105f557600080fd5b50356001600160a01b0316610e5f565b34801561061157600080fd5b506101796004803603604081101561062857600080fd5b506001600160a01b0381351690602001351515610e7a565b34801561064c57600080fd5b506102866004803603604081101561066357600080fd5b506001600160a01b0381351690602001351515610f94565b34801561068757600080fd5b506102af6110d4565b34801561069c57600080fd5b506102af600480360360408110156106b357600080fd5b506001600160a01b03813581169160200135166110da565b3480156106d757600080fd5b50610179600480360360408110156106ee57600080fd5b506001600160a01b038135169060200135611105565b34801561071057600080fd5b506101796004803603602081101561072757600080fd5b5035611263565b34801561073a57600080fd5b506107616004803603602081101561075157600080fd5b50356001600160a01b031661138f565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b60006107a8610a9b565b116107b257600080fd5b341561082d576107e36107c3610a9b565b6107d134600160801b611406565b816107d857fe5b600554919004611466565b60055560408051348152905133917fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511919081900360200190a26008546108299034611466565b6008555b565b600c600061083b6114be565b6001600160a01b0316815260208101919091526040016000205460ff16610897576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff1615610900576040805162461bcd60e51b81526020600482015260186024820152771058d8dbdd5b9d08185b1c9958591e48195e18db1d59195960421b604482015290519081900360640190fd5b6001600160a01b0382166000908152600a60205260408120805460ff1916600117905561092e9083906114c2565b8015610987576001600160a01b03821660009081526009602052604090205460ff1615610987576001600160a01b0382166000908152600960205260409020805460ff19169055600e5461098390600161151c565b600e555b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b5050505050905090565b6000610a69610a626114be565b848461155e565b5060015b92915050565b600e5490565b6001600160a01b0381166000908152600c602052604090205460ff165b919050565b60025490565b600c6000610aad6114be565b6001600160a01b0316815260208101919091526040016000205460ff16610b09576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001811015610b495760405162461bcd60e51b8152600401808060200182810382526034815260200180611aa56034913960400191505060405180910390fd5b600f5460405182907f9c9571fb23d65fec0768248b245e0bee0cd9e9036a4a9f9e8e417eb15188678590600090a3610b8981670de0b6b3a7640000611406565b600f5550565b600b6020526000908152604090205481565b6000610bae848484611595565b610c1e84610bba6114be565b610c1985604051806060016040528060288152602001611bb9602891396001600160a01b038a16600090815260016020526040812090610bf86114be565b6001600160a01b0316815260208101919091526040016000205491906115cc565b61155e565b5060019392505050565b6001600160a01b038116600090815260066020526040812054600160801b90610c7790610c7290610c6c610c67610c5e88610d2a565b60055490611406565b611663565b90611673565b6116a6565b81610c7e57fe5b0492915050565b601290565b6000610a69610c976114be565b84610c198560016000610ca86114be565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611466565b600a6020526000908152604090205460ff1681565b60405162461bcd60e51b8152600401808060200182810382526067815260200180611ad96067913960800191505060405180910390fd5b600d5481565b6001600160a01b031660009081526020819052604090205490565b60085481565b6000610a6d82610e1f565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b6000610a69610dc46114be565b84610c1985604051806060016040528060258152602001611d446025913960016000610dee6114be565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906115cc565b6001600160a01b038116600090815260076020526040812054610a6d90610e4584610c28565b9061151c565b6000610a69610e586114be565b8484611595565b6001600160a01b031660009081526007602052604090205490565b600c6000610e866114be565b6001600160a01b0316815260208101919091526040016000205460ff16610ee2576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff1615158115151415610f405760405162461bcd60e51b815260040180806020018281038252602c815260200180611b40602c913960400191505060405180910390fd5b6001600160a01b0382166000818152600c6020526040808220805460ff191685151590811790915590519092917f8ae3029208fd6692a475f09e97b7a86f7993f1eb5e1edb563554aebc2883860291a35050565b6000600c6000610fa26114be565b6001600160a01b0316815260208101919091526040016000205460ff16610ffe576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0383166000908152600b6020526040902054600d54429101106110595760405162461bcd60e51b8152600401808060200182810382526035815260200180611d0f6035913960400191505060405180910390fd5b6000611064846116b9565b905080156110ca576001600160a01b0384166000818152600b60209081526040918290204290558151848152915186151593927fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09292908290030190a36001915050610a6d565b5060009392505050565b600f5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600c60006111116114be565b6001600160a01b0316815260208101919091526040016000205460ff1661116d576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff16156111935761125f565b600f548110611201576111a682826114c2565b6001600160a01b03821660009081526009602052604090205460ff166111fc576001600160a01b0382166000908152600960205260409020805460ff19166001908117909155600e546111f891611466565b600e555b61125f565b61120c8260006114c2565b6001600160a01b03821660009081526009602052604090205460ff161561125f576001600160a01b0382166000908152600960205260409020805460ff19169055600e5461125b90600161151c565b600e555b5050565b600c600061126f6114be565b6001600160a01b0316815260208101919091526040016000205460ff166112cb576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b610e1081101580156112e05750620151808111155b61131b5760405162461bcd60e51b815260040180806020018281038252604b815260200180611c01604b913960600191505060405180910390fd5b600d5481141561135c5760405162461bcd60e51b815260040180806020018281038252603d815260200180611c8d603d913960400191505060405180910390fd5b600d5460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3600d55565b8060008080808061139f86610e1f565b94506113aa86610c28565b6001600160a01b0387166000908152600b60205260409020549094509250826113d357426113e1565b600d546113e1908490611466565b91504282116113f15760006113fb565b6113fb824261151c565b905091939550919395565b60008261141557506000610a6d565b8282028284828161142257fe5b041461145f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b6c6021913960400191505060405180910390fd5b9392505050565b60008282018381101561145f576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b3390565b60006114cd83610d2a565b9050808211156114f55760006114e3838361151c565b90506114ef84826117f8565b50611517565b80821015611517576000611509828461151c565b9050611515848261185c565b505b505050565b600061145f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115cc565b60405162461bcd60e51b8152600401808060200182810382526045815260200180611cca6045913960600191505060405180910390fd5b60405162461bcd60e51b815260040180806020018281038252602c815260200180611b8d602c913960400191505060405180910390fd5b6000818484111561165b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611620578181015183820152602001611608565b50505050905090810190601f16801561164d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008181811215610a6d57600080fd5b60008282018183128015906116885750838112155b8061169d575060008312801561169d57508381125b61145f57600080fd5b6000808212156116b557600080fd5b5090565b6000806116c583610e1f565b905080156117ef576040805182815290516001600160a01b038516917fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d919081900360200190a26001600160a01b03831660009081526007602052604090205461172f9082611466565b6001600160a01b038416600081815260076020526040808220939093559151610bb890849084818181858888f193505050503d806000811461178d576040519150601f19603f3d011682016040523d82523d6000602084013e611792565b606091505b50509050806117dc576001600160a01b0384166000908152600760205260409020546117be908361151c565b6001600160a01b0385166000908152600760205260409020556117e7565b600092505050610a96565b509050610a96565b50600092915050565b61180282826118a0565b61183c61181d610c678360055461140690919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611972565b6001600160a01b0390921660009081526006602052604090209190915550565b61186682826119a4565b61183c611881610c678360055461140690919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611673565b6001600160a01b0382166118fb576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546119089082611466565b6002556001600160a01b03821660009081526020819052604090205461192e9082611466565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020611c4c8339815191529281900390910190a35050565b60008183038183128015906119875750838113155b8061169d575060008312801561169d575083811361145f57600080fd5b6001600160a01b0382166119e95760405162461bcd60e51b8152600401808060200182810382526021815260200180611c6c6021913960400191505060405180910390fd5b611a2681604051806060016040528060228152602001611a83602291396001600160a01b03851660009081526020819052604090205491906115cc565b6001600160a01b038316600090815260208190526040902055600254611a4c908261151c565b6002556040805182815290516000916001600160a01b03851691600080516020611c4c8339815191529181900360200190a3505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365566972616c5f4469766964656e645f547261636b65723a206e65774d696e696d756d546f6b656e206d6f7265203120746f6b656e566972616c5f4469766964656e645f547261636b65723a2077697468647261774469766964656e642064697361626c65642e20557365207468652027636c61696d272066756e6374696f6e206f6e20746865206d61696e20564952414c20636f6e74726163742e4f776e6572736869703a20726f6c6520697320616c72656164792073657420746f20746869732076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77566972616c5f4469766964656e645f547261636b65723a204e6f207472616e736665727320616c6c6f77656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572566972616c5f4469766964656e645f547261636b65723a20636c61696d57616974206d757374206265207570646174656420746f206265747765656e203120616e6420323420686f757273ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373566972616c5f4469766964656e645f547261636b65723a2043616e6e6f742075706461746520636c61696d5761697420746f2073616d652076616c7565566972616c5f4469766964656e645f547261636b65723a20546f6b656e206973206e6f74207472616e7366657261626c652c206e6f206e65656420746f20617070726f7665566972616c5f4469766964656e645f547261636b65723a20706c65617365207761697420666f7220616e6f7468657220636c61696d45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220482c4f0277340bdce4d150ffd2d0504b2f78f2c3ca2f80c1fc226afcb991828064736f6c63430007060033
Deployed Bytecode Sourcemap
12974:6284:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9312:21;:19;:21::i;:::-;12974:6284;;;;;9496:467;;;:::i;15498:561::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15498:561:0;;;;;;;;;;:::i;3712:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4777:212;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4777:212:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16992:116;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14699:110;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14699:110:0;-1:-1:-1;;;;;14699:110:0;;:::i;4039:108::-;;;;;;;;;;;;;:::i;16570:414::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16570:414:0;;:::i;13218:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13218:49:0;-1:-1:-1;;;;;13218:49:0;;:::i;4997:456::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4997:456:0;;;;;;;;;;;;;;;;;:::i;11556:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11556:372:0;-1:-1:-1;;;;;11556:372:0;;:::i;3936:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5461:302;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5461:302:0;;;;;;;;:::i;13158:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13158:53:0;-1:-1:-1;;;;;13158:53:0;;:::i;15262:228::-;;;;;;;;;;;;;:::i;13325:24::-;;;;;;;;;;;;;:::i;4155:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4155:177:0;-1:-1:-1;;;;;4155:177:0;;:::i;9123:40::-;;;;;;;;;;;;;:::i;10963:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10963:174:0;-1:-1:-1;;;;;10963:174:0;;:::i;3822:106::-;;;;;;;;;;;;;:::i;5771:402::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5771:402:0;;;;;;;;:::i;11145:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11145:216:0;-1:-1:-1;;;;;11145:216:0;;:::i;4340:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4340:218:0;;;;;;;;:::i;11369:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11369:179:0;-1:-1:-1;;;;;11369:179:0;;:::i;14403:288::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14403:288:0;;;;;;;;;;:::i;18692:563::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18692:563:0;;;;;;;;;;:::i;13403:46::-;;;;;;;;;;;;;:::i;4566:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4566:203:0;;;;;;;;;;:::i;17937:747::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17937:747:0;;;;;;;;:::i;16067:495::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16067:495:0;;:::i;17116:813::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17116:813:0;-1:-1:-1;;;;;17116:813:0;;:::i;:::-;;;;-1:-1:-1;;;;;17116:813:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9496:467;9586:1;9570:13;:11;:13::i;:::-;:17;9562:26;;;;;;9603:9;:13;9599:357;;9661:105;9738:13;:11;:13::i;:::-;9709:26;9710:9;-1:-1:-1;;;9709:15:0;:26::i;:::-;:42;;;;;9661:25;;;9709:42;;9661:29;:105::i;:::-;9633:25;:133;9786:43;;;9819:9;9786:43;;;;9807:10;;9786:43;;;;;;;;;;9872:25;;:72;;9920:9;9872:29;:72::i;:::-;9844:25;:100;9599:357;9496:467::o;15498:561::-;13499:7;:21;13507:12;:10;:12::i;:::-;-1:-1:-1;;;;;13499:21:0;;;;;;;;;;;;-1:-1:-1;13499:21:0;;;;13491:66;;;;;-1:-1:-1;;;13491:66:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13491:66:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15632:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;::::1;;15631:31;15623:68;;;::::0;;-1:-1:-1;;;15623:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15623:68:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;15702:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;:37;;-1:-1:-1;;15702:37:0::1;15735:4;15702:37;::::0;;15750:23:::1;::::0;15724:7;;15750:11:::1;:23::i;:::-;15788:17;15784:223;;;-1:-1:-1::0;;;;;15826:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;::::1;;15822:174;;;-1:-1:-1::0;;;;;15872:25:0;::::1;15900:5;15872:25:::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;15872:33:0::1;::::0;;15950:23:::1;::::0;:30:::1;::::0;15872:33;15950:27:::1;:30::i;:::-;15924:23;:56:::0;15822:174:::1;16022:29;::::0;-1:-1:-1;;;;;16022:29:0;::::1;::::0;::::1;::::0;;;::::1;15498:561:::0;;:::o;3712:102::-;3801:5;3794:12;;;;;;;;-1:-1:-1;;3794:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:13;;3794:12;;3801:5;;3794:12;;3801:5;3794:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3712:102;:::o;4777:212::-;4898:4;4920:39;4929:12;:10;:12::i;:::-;4943:7;4952:6;4920:8;:39::i;:::-;-1:-1:-1;4977:4:0;4777:212;;;;;:::o;16992:116::-;17077:23;;16992:116;:::o;14699:110::-;-1:-1:-1;;;;;14786:15:0;;14762:4;14786:15;;;:7;:15;;;;;;;;14699:110;;;;:::o;4039:108::-;4127:12;;4039:108;:::o;16570:414::-;13499:7;:21;13507:12;:10;:12::i;:::-;-1:-1:-1;;;;;13499:21:0;;;;;;;;;;;;-1:-1:-1;13499:21:0;;;;13491:66;;;;;-1:-1:-1;;;13491:66:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13491:66:0;;;;;;;;;;;;;;;16695:1:::1;16676:15;:20;;16654:122;;;;-1:-1:-1::0;;;16654:122:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16865:31;::::0;16794:113:::1;::::0;16835:15;;16794:113:::1;::::0;;;::::1;16952:24;:15:::0;8873:6:::1;16952:19;:24::i;:::-;16918:31;:58:::0;-1:-1:-1;16570:414:0:o;13218:49::-;;;;;;;;;;;;;:::o;4997:456::-;5139:4;5156:36;5166:6;5174:9;5185:6;5156:9;:36::i;:::-;5203:220;5226:6;5247:12;:10;:12::i;:::-;5274:138;5330:6;5274:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5274:19:0;;;;;;:11;:19;;;;;;5294:12;:10;:12::i;:::-;-1:-1:-1;;;;;5274:33:0;;;;;;;;;;;;-1:-1:-1;5274:33:0;;;:138;:37;:138::i;:::-;5203:8;:220::i;:::-;-1:-1:-1;5441:4:0;4997:456;;;;;:::o;11556:372::-;-1:-1:-1;;;;;11837:36:0;;11670:7;11837:36;;;:28;:36;;;;;;-1:-1:-1;;;8924:6:0;11715:193;;:159;;:99;:66;11763:17;11866:6;11763:9;:17::i;:::-;11715:25;;;:47;:66::i;:::-;:97;:99::i;:::-;:121;;:159::i;:::-;:191;:193::i;:::-;:205;;;;;;;11556:372;-1:-1:-1;;11556:372:0:o;3936:95::-;4021:2;3936:95;:::o;5461:302::-;5578:4;5600:133;5623:12;:10;:12::i;:::-;5650:7;5672:50;5711:10;5672:11;:25;5684:12;:10;:12::i;:::-;-1:-1:-1;;;;;5672:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;5672:25:0;;;:34;;;;;;;;;;;:38;:50::i;13158:53::-;;;;;;;;;;;;;;;:::o;15262:228::-;15324:158;;-1:-1:-1;;;15324:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13325:24;;;;:::o;4155:177::-;-1:-1:-1;;;;;4306:18:0;4274:7;4306:18;;;;;;;;;;;;4155:177::o;9123:40::-;;;;:::o;10963:174::-;11067:7;11099:30;11122:6;11099:22;:30::i;3822:106::-;3913:7;3906:14;;;;;;;;-1:-1:-1;;3906:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:13;;3906:14;;3913:7;;3906:14;;3913:7;3906:14;;;;;;;;;;;;;;;;;;;;;;;;5771:402;5893:4;5915:228;5938:12;:10;:12::i;:::-;5965:7;5987:145;6044:15;5987:145;;;;;;;;;;;;;;;;;:11;:25;5999:12;:10;:12::i;:::-;-1:-1:-1;;;;;5987:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;5987:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;11145:216::-;-1:-1:-1;;;;;11326:26:0;;11259:7;11326:26;;;:18;:26;;;;;;11291:62;;:30;11345:6;11291:22;:30::i;:::-;:34;;:62::i;4340:218::-;4464:4;4486:42;4496:12;:10;:12::i;:::-;4510:9;4521:6;4486:9;:42::i;11369:179::-;-1:-1:-1;;;;;11514:26:0;11482:7;11514:26;;;:18;:26;;;;;;;11369:179::o;14403:288::-;13499:7;:21;13507:12;:10;:12::i;:::-;-1:-1:-1;;;;;13499:21:0;;;;;;;;;;;;-1:-1:-1;13499:21:0;;;;13491:66;;;;;-1:-1:-1;;;13491:66:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13491:66:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14507:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;::::1;;:25;;::::0;::::1;;;;14485:119;;;;-1:-1:-1::0;;;14485:119:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14615:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;:24;;-1:-1:-1;;14615:24:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14655:28;;14615:24;;:15;14655:28:::1;::::0;::::1;14403:288:::0;;:::o;18692:563::-;18813:4;13499:7;:21;13507:12;:10;:12::i;:::-;-1:-1:-1;;;;;13499:21:0;;;;;;;;;;;;-1:-1:-1;13499:21:0;;;;13491:66;;;;;-1:-1:-1;;;13491:66:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13491:66:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18869:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;18857:9:::1;::::0;18895:15:::1;18857:35:::0;::::1;:53;18835:156;;;;-1:-1:-1::0;;;18835:156:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19002:14;19019:32;19043:7;19019:23;:32::i;:::-;19002:49:::0;-1:-1:-1;19066:10:0;;19062:163:::1;;-1:-1:-1::0;;;;;19093:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;;;;19119:15:::1;19093:41:::0;;19154:33;;;;;;;;::::1;;::::0;19093:23;19154:33:::1;::::0;;;;;;;::::1;19209:4;19202:11;;;;;19062:163;-1:-1:-1::0;19242:5:0::1;::::0;18692:563;-1:-1:-1;;;18692:563:0:o;13403:46::-;;;;:::o;4566:203::-;-1:-1:-1;;;;;4734:18:0;;;4702:7;4734:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4566:203::o;17937:747::-;13499:7;:21;13507:12;:10;:12::i;:::-;-1:-1:-1;;;;;13499:21:0;;;;;;;;;;;;-1:-1:-1;13499:21:0;;;;13491:66;;;;;-1:-1:-1;;;13491:66:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13491:66:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18060:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;::::1;;18056:69;;;18107:7;;18056:69;18153:31;;18139:10;:45;18135:542;;18201:32;18213:7;18222:10;18201:11;:32::i;:::-;-1:-1:-1::0;;;;;18253:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;::::1;;18248:174;;-1:-1:-1::0;;;;;18299:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;:32;;-1:-1:-1;;18299:32:0::1;18327:4;18299:32:::0;;::::1;::::0;;;18376:23:::1;::::0;:30:::1;::::0;:27:::1;:30::i;:::-;18350:23;:56:::0;18248:174:::1;18135:542;;;18454:23;18466:7;18475:1;18454:11;:23::i;:::-;-1:-1:-1::0;;;;;18496:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;::::1;;18492:174;;;-1:-1:-1::0;;;;;18542:25:0;::::1;18570:5;18542:25:::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;18542:33:0::1;::::0;;18620:23:::1;::::0;:30:::1;::::0;18542:33;18620:27:::1;:30::i;:::-;18594:23;:56:::0;18492:174:::1;17937:747:::0;;:::o;16067:495::-;13499:7;:21;13507:12;:10;:12::i;:::-;-1:-1:-1;;;;;13499:21:0;;;;;;;;;;;;-1:-1:-1;13499:21:0;;;;13491:66;;;;;-1:-1:-1;;;13491:66:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13491:66:0;;;;;;;;;;;;;;;16183:4:::1;16167:12;:20;;:45;;;;;16207:5;16191:12;:21;;16167:45;16145:170;;;;-1:-1:-1::0;;;16145:170:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16364:9;;16348:12;:25;;16326:136;;;;-1:-1:-1::0;;;16326:136:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16509:9;::::0;16478:41:::1;::::0;16495:12;;16478:41:::1;::::0;;;::::1;16530:9;:24:::0;16067:495::o;17116:813::-;17477:8;17218:15;;;;;17520:31;17477:8;17520:22;:31::i;:::-;17496:55;;17579:31;17602:7;17579:22;:31::i;:::-;-1:-1:-1;;;;;17637:23:0;;;;;;:14;:23;;;;;;17562:48;;-1:-1:-1;17637:23:0;-1:-1:-1;17687:17:0;:92;;17764:15;17687:92;;;17738:9;;17720:28;;:13;;:17;:28::i;:::-;17671:108;;17839:15;17823:13;:31;:98;;17920:1;17823:98;;;17870:34;:13;17888:15;17870:17;:34::i;:::-;17790:131;;17116:813;;;;;;;:::o;1622:246::-;1680:7;1704:6;1700:47;;-1:-1:-1;1734:1:0;1727:8;;1700:47;1769:5;;;1773:1;1769;:5;:1;1793:5;;;;;:10;1785:56;;;;-1:-1:-1;;;1785:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1859:1;1622:246;-1:-1:-1;;;1622:246:0:o;1059:179::-;1117:7;1149:5;;;1173:6;;;;1165:46;;;;;-1:-1:-1;;;1165:46:0;;;;;;;;;;;;-1:-1:-1;;;1165:46:0;;;;;;;;;;;;;;93:98;173:10;93:98;:::o;12518:449::-;12596:22;12621:18;12631:7;12621:9;:18::i;:::-;12596:43;;12667:14;12654:10;:27;12650:310;;;12698:18;12719:30;:10;12734:14;12719;:30::i;:::-;12698:51;;12764:26;12770:7;12779:10;12764:5;:26::i;:::-;12650:310;;;;12825:14;12812:10;:27;12808:152;;;12856:18;12877:30;:14;12896:10;12877:18;:30::i;:::-;12856:51;;12922:26;12928:7;12937:10;12922:5;:26::i;:::-;12808:152;;12518:449;;;:::o;1246:136::-;1304:7;1331:43;1335:1;1338;1331:43;;;;;;;;;;;;;;;;;:3;:43::i;14817:245::-;14930:124;;-1:-1:-1;;;14930:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15070:184;15184:62;;-1:-1:-1;;;15184:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:224;1510:7;1546:12;1538:6;;;;1530:29;;;;-1:-1:-1;;;1530:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1582:5:0;;;1390:224::o;226:148::-;282:6;319:1;340:6;;;;332:15;;;;;717:176;773:6;803:5;;;828:6;;;;;;:16;;;843:1;838;:6;;828:16;827:38;;;;854:1;850;:5;:14;;;;;863:1;859;:5;850:14;819:47;;;;;901:127;957:7;990:1;985;:6;;977:15;;;;;;-1:-1:-1;1018:1:0;901:127::o;10096:859::-;10187:7;10212:29;10244:28;10267:4;10244:22;:28::i;:::-;10212:60;-1:-1:-1;10287:25:0;;10283:646;;10334:46;;;;;;;;-1:-1:-1;;;;;10334:46:0;;;;;;;;;;;;;-1:-1:-1;;;;;10422:24:0;;;;;;:18;:24;;;;;;:83;;10469:21;10422:28;:83::i;:::-;-1:-1:-1;;;;;10395:24:0;;;;;;:18;:24;;;;;;:110;;;;10539:103;;10619:4;;10574:21;;10395:24;10539:103;10395:24;10539:103;10574:21;10395:24;10619:4;10539:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10520:122;;;10664:7;10659:216;;-1:-1:-1;;;;;10719:24:0;;;;;;:18;:24;;;;;;:91;;10770:21;10719:28;:91::i;:::-;-1:-1:-1;;;;;10692:24:0;;;;;;:18;:24;;;;;:118;10659:216;;;10858:1;10851:8;;;;;;10659:216;-1:-1:-1;10896:21:0;-1:-1:-1;10889:28:0;;10283:646;-1:-1:-1;10946:1:0;;10096:859;-1:-1:-1;;10096:859:0:o;11936:284::-;12012:27;12024:7;12033:5;12012:11;:27::i;:::-;12092:120;12158:53;12159:36;12189:5;12159:25;;:29;;:36;;;;:::i;12158:53::-;-1:-1:-1;;;;;12092:61:0;;;;;;:28;:61;;;;;;;:65;:120::i;:::-;-1:-1:-1;;;;;12052:37:0;;;;;;;:28;:37;;;;;:160;;;;-1:-1:-1;11936:284:0:o;12228:282::-;12304:27;12316:7;12325:5;12304:11;:27::i;:::-;12382:120;12448:53;12449:36;12479:5;12449:25;;:29;;:36;;;;:::i;12448:53::-;-1:-1:-1;;;;;12382:61:0;;;;;;:28;:61;;;;;;;:65;:120::i;6737:314::-;-1:-1:-1;;;;;6821:21:0;;6813:65;;;;;-1:-1:-1;;;6813:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6904:12;;:24;;6921:6;6904:16;:24::i;:::-;6889:12;:39;-1:-1:-1;;;;;6960:18:0;;:9;:18;;;;;;;;;;;:30;;6983:6;6960:22;:30::i;:::-;-1:-1:-1;;;;;6939:18:0;;:9;:18;;;;;;;;;;;:51;;;;7006:37;;;;;;;6939:18;;:9;;-1:-1:-1;;;;;;;;;;;7006:37:0;;;;;;;;;6737:314;;:::o;533:176::-;589:6;619:5;;;644:6;;;;;;:16;;;659:1;654;:6;;644:16;643:38;;;;670:1;666;:5;:14;;;;;679:1;675;:5;635:47;;;;;7059:391;-1:-1:-1;;;;;7143:21:0;;7135:67;;;;-1:-1:-1;;;7135:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:105;7271:6;7234:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7234:18:0;;:9;:18;;;;;;;;;;;;:105;:22;:105::i;:::-;-1:-1:-1;;;;;7213:18:0;;:9;:18;;;;;;;;;;:126;7365:12;;:24;;7382:6;7365:16;:24::i;:::-;7350:12;:39;7405:37;;;;;;;;7431:1;;-1:-1:-1;;;;;7405:37:0;;;-1:-1:-1;;;;;;;;;;;7405:37:0;;;;;;;;7059:391;;:::o
Swarm Source
ipfs://482c4f0277340bdce4d150ffd2d0504b2f78f2c3ca2f80c1fc226afcb9918280
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.