Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
24,747.580394957479406421 PAN
Holders
167
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
10.650098080113597291 PANValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PantheonEcoSystem
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-28 */ pragma solidity 0.4.25; contract PantheonEcoSystem { struct UserRecord { address referrer; uint tokens; uint gained_funds; uint ref_funds; // this field can be negative int funds_correction; } using SafeMath for uint; using SafeMathInt for int; using Fee for Fee.fee; using ToAddress for bytes; // ERC20 string constant public name = "Pantheon Ecosystem"; string constant public symbol = "PAN"; uint8 constant public decimals = 18; // Fees Fee.fee private fee_purchase = Fee.fee(1, 10); // 10% Fee.fee private fee_selling = Fee.fee(1, 20); // 5% Fee.fee private fee_transfer = Fee.fee(1, 100); // 1% Fee.fee private fee_referral = Fee.fee(33, 100); // 33% // Minimal amount of tokens to be an participant of referral program uint constant private minimal_stake = 10e18; // Factor for converting eth <-> tokens with required precision of calculations uint constant private precision_factor = 1e18; // Pricing policy // - if user buy 1 token, price will be increased by "price_offset" value // - if user sell 1 token, price will be decreased by "price_offset" value // For details see methods "fundsToTokens" and "tokensToFunds" uint private price = 1e29; // 100 Gwei * precision_factor uint constant private price_offset = 1e28; // 10 Gwei * precision_factor // Total amount of tokens uint private total_supply = 0; // Total profit shared between token's holders. It's not reflect exactly sum of funds because this parameter // can be modified to keep the real user's dividends when total supply is changed // For details see method "dividendsOf" and using "funds_correction" in the code uint private shared_profit = 0; // Map of the users data mapping(address => UserRecord) private user_data; // ==== Modifiers ==== // modifier onlyValidTokenAmount(uint tokens) { require(tokens > 0, "Amount of tokens must be greater than zero"); require(tokens <= user_data[msg.sender].tokens, "You have not enough tokens"); _; } // ==== Public API ==== // // ---- Write methods ---- // function () public payable { buy(msg.data.toAddr()); } /* * @dev Buy tokens from incoming funds */ function buy(address referrer) public payable { // apply fee (uint fee_funds, uint taxed_funds) = fee_purchase.split(msg.value); require(fee_funds != 0, "Incoming funds is too small"); // update user's referrer // - you cannot be a referrer for yourself // - user and his referrer will be together all the life UserRecord storage user = user_data[msg.sender]; if (referrer != 0x0 && referrer != msg.sender && user.referrer == 0x0) { user.referrer = referrer; } // apply referral bonus if (user.referrer != 0x0) { fee_funds = rewardReferrer(msg.sender, user.referrer, fee_funds, msg.value); require(fee_funds != 0, "Incoming funds is too small"); } // calculate amount of tokens and change price (uint tokens, uint _price) = fundsToTokens(taxed_funds); require(tokens != 0, "Incoming funds is too small"); price = _price; // mint tokens and increase shared profit mintTokens(msg.sender, tokens); shared_profit = shared_profit.add(fee_funds); emit Purchase(msg.sender, msg.value, tokens, price / precision_factor, now); } /* * @dev Sell given amount of tokens and get funds */ function sell(uint tokens) public onlyValidTokenAmount(tokens) { // calculate amount of funds and change price (uint funds, uint _price) = tokensToFunds(tokens); require(funds != 0, "Insufficient tokens to do that"); price = _price; // apply fee (uint fee_funds, uint taxed_funds) = fee_selling.split(funds); require(fee_funds != 0, "Insufficient tokens to do that"); // burn tokens and add funds to user's dividends burnTokens(msg.sender, tokens); UserRecord storage user = user_data[msg.sender]; user.gained_funds = user.gained_funds.add(taxed_funds); // increase shared profit shared_profit = shared_profit.add(fee_funds); emit Selling(msg.sender, tokens, funds, price / precision_factor, now); } /* * @dev Transfer given amount of tokens from sender to another user * ERC20 */ function transfer(address to_addr, uint tokens) public onlyValidTokenAmount(tokens) returns (bool success) { require(to_addr != msg.sender, "You cannot transfer tokens to yourself"); // apply fee (uint fee_tokens, uint taxed_tokens) = fee_transfer.split(tokens); require(fee_tokens != 0, "Insufficient tokens to do that"); // calculate amount of funds and change price (uint funds, uint _price) = tokensToFunds(fee_tokens); require(funds != 0, "Insufficient tokens to do that"); price = _price; // burn and mint tokens excluding fee burnTokens(msg.sender, tokens); mintTokens(to_addr, taxed_tokens); // increase shared profit shared_profit = shared_profit.add(funds); emit Transfer(msg.sender, to_addr, tokens); return true; } /* * @dev Reinvest all dividends */ function reinvest() public { // get all dividends uint funds = dividendsOf(msg.sender); require(funds > 0, "You have no dividends"); // make correction, dividents will be 0 after that UserRecord storage user = user_data[msg.sender]; user.funds_correction = user.funds_correction.add(int(funds)); // apply fee (uint fee_funds, uint taxed_funds) = fee_purchase.split(funds); require(fee_funds != 0, "Insufficient dividends to do that"); // apply referral bonus if (user.referrer != 0x0) { fee_funds = rewardReferrer(msg.sender, user.referrer, fee_funds, funds); require(fee_funds != 0, "Insufficient dividends to do that"); } // calculate amount of tokens and change price (uint tokens, uint _price) = fundsToTokens(taxed_funds); require(tokens != 0, "Insufficient dividends to do that"); price = _price; // mint tokens and increase shared profit mintTokens(msg.sender, tokens); shared_profit = shared_profit.add(fee_funds); emit Reinvestment(msg.sender, funds, tokens, price / precision_factor, now); } /* * @dev Withdraw all dividends */ function withdraw() public { // get all dividends uint funds = dividendsOf(msg.sender); require(funds > 0, "You have no dividends"); // make correction, dividents will be 0 after that UserRecord storage user = user_data[msg.sender]; user.funds_correction = user.funds_correction.add(int(funds)); // send funds msg.sender.transfer(funds); emit Withdrawal(msg.sender, funds, now); } /* * @dev Sell all tokens and withraw dividends */ function exit() public { // sell all tokens uint tokens = user_data[msg.sender].tokens; if (tokens > 0) { sell(tokens); } withdraw(); } /* * @dev CAUTION! This method distributes all incoming funds between token's holders and gives you nothing * It will be used by another contracts/addresses from our ecosystem in future * But if you want to donate, you're welcome :) */ function donate() public payable { shared_profit = shared_profit.add(msg.value); emit Donation(msg.sender, msg.value, now); } // ---- Read methods ---- // /* * @dev Total amount of tokens * ERC20 */ function totalSupply() public view returns (uint) { return total_supply; } /* * @dev Amount of user's tokens * ERC20 */ function balanceOf(address addr) public view returns (uint) { return user_data[addr].tokens; } /* * @dev Amount of user's dividends */ function dividendsOf(address addr) public view returns (uint) { UserRecord memory user = user_data[addr]; // gained funds from selling tokens + bonus funds from referrals // int because "user.funds_correction" can be negative int d = int(user.gained_funds.add(user.ref_funds)); require(d >= 0); // avoid zero divizion if (total_supply > 0) { // profit is proportional to stake d = d.add(int(shared_profit.mul(user.tokens) / total_supply)); } // correction // d -= user.funds_correction if (user.funds_correction > 0) { d = d.sub(user.funds_correction); } else if (user.funds_correction < 0) { d = d.add(-user.funds_correction); } // just in case require(d >= 0); // total sum must be positive uint return uint(d); } /* * @dev Amount of tokens can be gained from given amount of funds */ function expectedTokens(uint funds, bool apply_fee) public view returns (uint) { if (funds == 0) { return 0; } if (apply_fee) { (,uint _funds) = fee_purchase.split(funds); funds = _funds; } (uint tokens,) = fundsToTokens(funds); return tokens; } /* * @dev Amount of funds can be gained from given amount of tokens */ function expectedFunds(uint tokens, bool apply_fee) public view returns (uint) { // empty tokens in total OR no tokens was sold if (tokens == 0 || total_supply == 0) { return 0; } // more tokens than were mined in total, just exclude unnecessary tokens from calculating else if (tokens > total_supply) { tokens = total_supply; } (uint funds,) = tokensToFunds(tokens); if (apply_fee) { (,uint _funds) = fee_selling.split(funds); funds = _funds; } return funds; } /* * @dev Purchase price of next 1 token */ function buyPrice() public view returns (uint) { return price / precision_factor; } /* * @dev Selling price of next 1 token */ function sellPrice() public view returns (uint) { return price.sub(price_offset) / precision_factor; } // ==== Private API ==== // /* * @dev Mint given amount of tokens to given user */ function mintTokens(address addr, uint tokens) internal { UserRecord storage user = user_data[addr]; bool not_first_minting = total_supply > 0; // make correction to keep dividends the rest of the users if (not_first_minting) { shared_profit = shared_profit.mul(total_supply.add(tokens)) / total_supply; } // add tokens total_supply = total_supply.add(tokens); user.tokens = user.tokens.add(tokens); // make correction to keep dividends of user if (not_first_minting) { user.funds_correction = user.funds_correction.add(int(tokens.mul(shared_profit) / total_supply)); } } /* * @dev Burn given amout of tokens from given user */ function burnTokens(address addr, uint tokens) internal { UserRecord storage user = user_data[addr]; // keep current dividents of user if last tokens will be burned uint dividends_from_tokens = 0; if (total_supply == tokens) { dividends_from_tokens = shared_profit.mul(user.tokens) / total_supply; } // make correction to keep dividends the rest of the users shared_profit = shared_profit.mul(total_supply.sub(tokens)) / total_supply; // sub tokens total_supply = total_supply.sub(tokens); user.tokens = user.tokens.sub(tokens); // make correction to keep dividends of the user // if burned not last tokens if (total_supply > 0) { user.funds_correction = user.funds_correction.sub(int(tokens.mul(shared_profit) / total_supply)); } // if burned last tokens else if (dividends_from_tokens != 0) { user.funds_correction = user.funds_correction.sub(int(dividends_from_tokens)); } } /* * @dev Rewards the referrer from given amount of funds */ function rewardReferrer(address addr, address referrer_addr, uint funds, uint full_funds) internal returns (uint funds_after_reward) { UserRecord storage referrer = user_data[referrer_addr]; if (referrer.tokens >= minimal_stake) { (uint reward_funds, uint taxed_funds) = fee_referral.split(funds); referrer.ref_funds = referrer.ref_funds.add(reward_funds); emit ReferralReward(addr, referrer_addr, full_funds, reward_funds, now); return taxed_funds; } else { return funds; } } /* * @dev Calculate tokens from funds * * Given: * a[1] = price * d = price_offset * sum(n) = funds * Here is used arithmetic progression's equation transformed to a quadratic equation: * a * n^2 + b * n + c = 0 * Where: * a = d * b = 2 * a[1] - d * c = -2 * sum(n) * Solve it and first root is what we need - amount of tokens * So: * tokens = n * price = a[n+1] * * For details see method below */ function fundsToTokens(uint funds) internal view returns (uint tokens, uint _price) { uint b = price.mul(2).sub(price_offset); uint D = b.mul(b).add(price_offset.mul(8).mul(funds).mul(precision_factor)); uint n = D.sqrt().sub(b).mul(precision_factor) / price_offset.mul(2); uint anp1 = price.add(price_offset.mul(n) / precision_factor); return (n, anp1); } /* * @dev Calculate funds from tokens * * Given: * a[1] = sell_price * d = price_offset * n = tokens * Here is used arithmetic progression's equation (-d because of d must be negative to reduce price): * a[n] = a[1] - d * (n - 1) * sum(n) = (a[1] + a[n]) * n / 2 * So: * funds = sum(n) * price = a[n] * * For details see method above */ function tokensToFunds(uint tokens) internal view returns (uint funds, uint _price) { uint sell_price = price.sub(price_offset); uint an = sell_price.add(price_offset).sub(price_offset.mul(tokens) / precision_factor); uint sn = sell_price.add(an).mul(tokens) / precision_factor.mul(2); return (sn / precision_factor, an); } // ==== Events ==== // event Purchase(address indexed addr, uint funds, uint tokens, uint price, uint time); event Selling(address indexed addr, uint tokens, uint funds, uint price, uint time); event Reinvestment(address indexed addr, uint funds, uint tokens, uint price, uint time); event Withdrawal(address indexed addr, uint funds, uint time); event Donation(address indexed addr, uint funds, uint time); event ReferralReward(address indexed referral_addr, address indexed referrer_addr, uint funds, uint reward_funds, uint time); //ERC20 event Transfer(address indexed from_addr, address indexed to_addr, uint tokens); } library SafeMath { /** * @dev Multiplies two numbers */ function mul(uint a, uint b) internal pure returns (uint) { if (a == 0) { return 0; } uint c = a * b; require(c / a == b, "mul failed"); return c; } /** * @dev Subtracts two numbers */ function sub(uint a, uint b) internal pure returns (uint) { require(b <= a, "sub failed"); return a - b; } /** * @dev Adds two numbers */ function add(uint a, uint b) internal pure returns (uint) { uint c = a + b; require(c >= a, "add failed"); return c; } /** * @dev Gives square root from number */ function sqrt(uint x) internal pure returns (uint y) { uint z = add(x, 1) / 2; y = x; while (z < y) { y = z; z = add(x / z, z) / 2; } } } library SafeMathInt { /** * @dev Subtracts two numbers */ function sub(int a, int b) internal pure returns (int) { int c = a - b; require(c <= a, "sub failed"); return c; } /** * @dev Adds two numbers */ function add(int a, int b) internal pure returns (int) { int c = a + b; require(c >= a, "add failed"); return c; } } library Fee { using SafeMath for uint; struct fee { uint num; uint den; } /* * @dev Splits given value to two parts: tax itself and taxed value */ function split(fee memory f, uint value) internal pure returns (uint tax, uint taxed_value) { if (value == 0) { return (0, 0); } tax = value.mul(f.num) / f.den; taxed_value = value.sub(tax); } /* * @dev Returns only tax part */ function get_tax(fee memory f, uint value) internal pure returns (uint tax) { if (value == 0) { return 0; } tax = value.mul(f.num) / f.den; } } library ToAddress { /* * @dev Transforms bytes to address */ function toAddr(bytes source) internal pure returns (address addr) { assembly { addr := mload(add(source, 0x14)) } return addr; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to_addr","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"apply_fee","type":"bool"}],"name":"expectedFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"funds","type":"uint256"},{"name":"apply_fee","type":"bool"}],"name":"expectedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"referrer","type":"address"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Selling","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Reinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Donation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"referral_addr","type":"address"},{"indexed":true,"name":"referrer_addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"reward_funds","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"ReferralReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from_addr","type":"address"},{"indexed":true,"name":"to_addr","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
6080604052604080519081016040528060018152602001600a81525060008082015181600001556020820151816001015550506040805190810160405280600181526020016014815250600260008201518160000155602082015181600101555050604080519081016040528060018152602001606481525060046000820151816000015560208201518160010155505060408051908101604052806021815260200160648152506006600082015181600001556020820151816001015550506c01431e0fae6d7217caa000000060085560006009556000600a553480156100e657600080fd5b506125b8806100f66000396000f3006080604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461013657806306fdde031461018d57806318160ddd1461021d578063313ce567146102485780633ccfd60b146102795780634b7503341461029057806370a08231146102bb5780638620410b1461031257806395d89b411461033d578063a9059cbb146103cd578063be2eaad414610432578063c5f606201461047f578063e4849b32146104cc578063e9fad8ee146104f9578063ed88c68e14610510578063f088d5471461051a578063fdb5a03e14610550575b61013461012f6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610567565b610578565b005b34801561014257600080fd5b50610177600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610978565b6040518082815260200191505060405180910390f35b34801561019957600080fd5b506101a2610b32565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e25780820151818401526020810190506101c7565b50505050905090810190601f16801561020f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022957600080fd5b50610232610b6b565b6040518082815260200191505060405180910390f35b34801561025457600080fd5b5061025d610b75565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028557600080fd5b5061028e610b7a565b005b34801561029c57600080fd5b506102a5610d01565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3c565b6040518082815260200191505060405180910390f35b34801561031e57600080fd5b50610327610d88565b6040518082815260200191505060405180910390f35b34801561034957600080fd5b50610352610da5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610392578082015181840152602081019050610377565b50505050905090810190601f1680156103bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d957600080fd5b50610418600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dde565b604051808215151515815260200191505060405180910390f35b34801561043e57600080fd5b50610469600480360381019080803590602001909291908035151590602001909291905050506111e9565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b506104b660048036038101908080359060200190929190803515159060200190929190505050611274565b6040518082815260200191505060405180910390f35b3480156104d857600080fd5b506104f7600480360381019080803590602001909291905050506112e2565b005b34801561050557600080fd5b5061050e611689565b005b6105186116ee565b005b61054e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610578565b005b34801561055c57600080fd5b50610565611761565b005b600060148201519050809050919050565b60008060008060006105b334600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9450945060008514151515610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060008673ffffffffffffffffffffffffffffffffffffffff16141580156106c457503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561070a575060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561075357858360000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610843576107c7338460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168734611bf7565b945060008514151515610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b5b61084c84611d35565b91509150600082141515156108c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b806008819055506108da3383611e9e565b6108ef85600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167fd721454499cf9c37b757e03b9d675df451c229048129d6e2d552216a035e6a553484670de0b6b3a764000060085481151561094457fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b6000610982612546565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815250509150610a6a82606001518360400151611fb490919063ffffffff16565b905060008112151515610a7c57600080fd5b60006009541115610ac257610abf600954610aa68460200151600a5461203e90919063ffffffff16565b811515610aaf57fe5b04826120e590919063ffffffff16565b90505b600082608001511315610aed57610ae682608001518261216f90919063ffffffff16565b9050610b18565b600082608001511215610b1757610b148260800151600003826120e590919063ffffffff16565b90505b5b60008112151515610b2857600080fd5b8092505050919050565b6040805190810160405280601281526020017f50616e7468656f6e2045636f73797374656d000000000000000000000000000081525081565b6000600954905090565b601281565b600080610b8633610978565b9150600082111515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f752068617665206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610c588282600401546120e590919063ffffffff16565b81600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ca6573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb8342604051808381526020018281526020019250505060405180910390a25050565b6000670de0b6b3a7640000610d2d6b204fce5e3e250261100000006008546121f990919063ffffffff16565b811515610d3657fe5b04905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000670de0b6b3a7640000600854811515610d9f57fe5b04905090565b6040805190810160405280600381526020017f50414e000000000000000000000000000000000000000000000000000000000081525081565b600080600080600085600081111515610e85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f416d6f756e74206f6620746f6b656e73206d757374206265206772656174657281526020017f207468616e207a65726f0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111151515610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752068617665206e6f7420656e6f75676820746f6b656e7300000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f596f752063616e6e6f74207472616e7366657220746f6b656e7320746f20796f81526020017f757273656c66000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61103c87600460408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b94509450600085141515156110b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b6110c28561227e565b925092506000831415151561113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b81600881905550611150338861237b565b61115a8885611e9e565b61116f83600a54611fb490919063ffffffff16565b600a819055508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a360019550505050505092915050565b6000806000808514806111fe57506000600954145b1561120c576000925061126c565b60095485111561121c5760095494505b6112258561227e565b50915083156112685761126182600260408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9150508091505b8192505b505092915050565b60008060008085141561128a57600092506112da565b83156112ca576112c385600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9250508194505b6112d385611d35565b5090508092505b505092915050565b600080600080600085600081111515611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f416d6f756e74206f6620746f6b656e73206d757374206265206772656174657281526020017f207468616e207a65726f0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111151515611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752068617665206e6f7420656e6f75676820746f6b656e7300000000000081525060200191505060405180910390fd5b61144c8761227e565b95509550600086141515156114c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b8460088190555061150386600260408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9350935060008414151515611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b61158a338861237b565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506115e2838360020154611fb490919063ffffffff16565b82600201819055506115ff84600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167fafd310387603da0dcf44f11f54b04254b548c58b194e75f85851e849f0eef3078888670de0b6b3a764000060085481151561165457fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060008111156116e3576116e2816112e2565b5b6116eb610b7a565b50565b61170334600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f106aac375bbcf013d1e52338bbf9e740009a1a3a6869f8daa1b72aa1620f5fec3442604051808381526020018281526020019250505060405180910390a2565b60008060008060008061177333610978565b95506000861115156117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f752068617665206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002094506118458686600401546120e590919063ffffffff16565b856004018190555061188086600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9350935060008414151515611923576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a3957611997338660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168689611bf7565b935060008414151515611a38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b611a4283611d35565b9150915060008214151515611ae5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600881905550611af63383611e9e565b611b0b84600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f1abe689c7914cafd54f789eb0851e90cba235302161e81e259ee4c357c374d828784670de0b6b3a7640000600854811515611b6057fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b6000806000831415611bb25760008081915080905091509150611bf0565b8360200151611bce85600001518561203e90919063ffffffff16565b811515611bd757fe5b049150611bed82846121f990919063ffffffff16565b90505b9250929050565b600080600080600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250678ac7230489e800008360010154101515611d2657611c8686600660408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b91509150611ca1828460030154611fb490919063ffffffff16565b83600301819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f870e4e1dcfab6c09707448d3659b3d8097c084bf06e7467d6029940cd7122ee087854260405180848152602001838152602001828152602001935050505060405180910390a3809350611d2a565b8593505b505050949350505050565b600080600080600080611d726b204fce5e3e25026110000000611d64600260085461203e90919063ffffffff16565b6121f990919063ffffffff16565b9350611de4611dc3670de0b6b3a7640000611db58a611da760086b204fce5e3e2502611000000061203e90919063ffffffff16565b61203e90919063ffffffff16565b61203e90919063ffffffff16565b611dd6868761203e90919063ffffffff16565b611fb490919063ffffffff16565b9250611e0660026b204fce5e3e2502611000000061203e90919063ffffffff16565b611e3b670de0b6b3a7640000611e2d87611e1f886124ed565b6121f990919063ffffffff16565b61203e90919063ffffffff16565b811515611e4457fe5b049150611e8d670de0b6b3a7640000611e72846b204fce5e3e2502611000000061203e90919063ffffffff16565b811515611e7b57fe5b04600854611fb490919063ffffffff16565b905081819550955050505050915091565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020915060006009541190508015611f2d57600954611f1c611f0b85600954611fb490919063ffffffff16565b600a5461203e90919063ffffffff16565b811515611f2557fe5b04600a819055505b611f4283600954611fb490919063ffffffff16565b600981905550611f5f838360010154611fb490919063ffffffff16565b82600101819055508015611fae57611fa5600954611f88600a548661203e90919063ffffffff16565b811515611f9157fe5b0483600401546120e590919063ffffffff16565b82600401819055505b50505050565b6000808284019050838110151515612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616464206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b600080600084141561205357600091506120de565b828402905082848281151561206457fe5b041415156120da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6d756c206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505b5092915050565b6000808284019050838112151515612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616464206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b60008082840390508381131515156121ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f737562206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b6000828211151515612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f737562206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b60008060008060006122a76b204fce5e3e250261100000006008546121f990919063ffffffff16565b925061230b670de0b6b3a76400006122d4886b204fce5e3e2502611000000061203e90919063ffffffff16565b8115156122dd57fe5b046122fd6b204fce5e3e2502611000000086611fb490919063ffffffff16565b6121f990919063ffffffff16565b91506123296002670de0b6b3a764000061203e90919063ffffffff16565b61234e876123408587611fb490919063ffffffff16565b61203e90919063ffffffff16565b81151561235757fe5b049050670de0b6b3a76400008181151561236d57fe5b048294509450505050915091565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150600090508260095414156123f6576009546123e98360010154600a5461203e90919063ffffffff16565b8115156123f257fe5b0490505b600954612422612411856009546121f990919063ffffffff16565b600a5461203e90919063ffffffff16565b81151561242b57fe5b04600a81905550612447836009546121f990919063ffffffff16565b6009819055506124648383600101546121f990919063ffffffff16565b8260010181905550600060095411156124bc576124af600954612492600a548661203e90919063ffffffff16565b81151561249b57fe5b04836004015461216f90919063ffffffff16565b82600401819055506124e7565b6000811415156124e6576124dd81836004015461216f90919063ffffffff16565b82600401819055505b5b50505050565b60008060026124fd846001611fb4565b81151561250657fe5b0490508291505b8181101561254057809150600261252f828581151561252857fe5b0483611fb4565b81151561253857fe5b04905061250d565b50919050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820d955d83e2f50a5c7177643dd267b780a8970bb1eab8c7cc7e550b3edf856cb5f0029
Deployed Bytecode
0x6080604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461013657806306fdde031461018d57806318160ddd1461021d578063313ce567146102485780633ccfd60b146102795780634b7503341461029057806370a08231146102bb5780638620410b1461031257806395d89b411461033d578063a9059cbb146103cd578063be2eaad414610432578063c5f606201461047f578063e4849b32146104cc578063e9fad8ee146104f9578063ed88c68e14610510578063f088d5471461051a578063fdb5a03e14610550575b61013461012f6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610567565b610578565b005b34801561014257600080fd5b50610177600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610978565b6040518082815260200191505060405180910390f35b34801561019957600080fd5b506101a2610b32565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e25780820151818401526020810190506101c7565b50505050905090810190601f16801561020f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022957600080fd5b50610232610b6b565b6040518082815260200191505060405180910390f35b34801561025457600080fd5b5061025d610b75565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028557600080fd5b5061028e610b7a565b005b34801561029c57600080fd5b506102a5610d01565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3c565b6040518082815260200191505060405180910390f35b34801561031e57600080fd5b50610327610d88565b6040518082815260200191505060405180910390f35b34801561034957600080fd5b50610352610da5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610392578082015181840152602081019050610377565b50505050905090810190601f1680156103bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d957600080fd5b50610418600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dde565b604051808215151515815260200191505060405180910390f35b34801561043e57600080fd5b50610469600480360381019080803590602001909291908035151590602001909291905050506111e9565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b506104b660048036038101908080359060200190929190803515159060200190929190505050611274565b6040518082815260200191505060405180910390f35b3480156104d857600080fd5b506104f7600480360381019080803590602001909291905050506112e2565b005b34801561050557600080fd5b5061050e611689565b005b6105186116ee565b005b61054e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610578565b005b34801561055c57600080fd5b50610565611761565b005b600060148201519050809050919050565b60008060008060006105b334600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9450945060008514151515610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060008673ffffffffffffffffffffffffffffffffffffffff16141580156106c457503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561070a575060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561075357858360000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610843576107c7338460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168734611bf7565b945060008514151515610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b5b61084c84611d35565b91509150600082141515156108c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b806008819055506108da3383611e9e565b6108ef85600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167fd721454499cf9c37b757e03b9d675df451c229048129d6e2d552216a035e6a553484670de0b6b3a764000060085481151561094457fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b6000610982612546565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815250509150610a6a82606001518360400151611fb490919063ffffffff16565b905060008112151515610a7c57600080fd5b60006009541115610ac257610abf600954610aa68460200151600a5461203e90919063ffffffff16565b811515610aaf57fe5b04826120e590919063ffffffff16565b90505b600082608001511315610aed57610ae682608001518261216f90919063ffffffff16565b9050610b18565b600082608001511215610b1757610b148260800151600003826120e590919063ffffffff16565b90505b5b60008112151515610b2857600080fd5b8092505050919050565b6040805190810160405280601281526020017f50616e7468656f6e2045636f73797374656d000000000000000000000000000081525081565b6000600954905090565b601281565b600080610b8633610978565b9150600082111515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f752068617665206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610c588282600401546120e590919063ffffffff16565b81600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ca6573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb8342604051808381526020018281526020019250505060405180910390a25050565b6000670de0b6b3a7640000610d2d6b204fce5e3e250261100000006008546121f990919063ffffffff16565b811515610d3657fe5b04905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000670de0b6b3a7640000600854811515610d9f57fe5b04905090565b6040805190810160405280600381526020017f50414e000000000000000000000000000000000000000000000000000000000081525081565b600080600080600085600081111515610e85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f416d6f756e74206f6620746f6b656e73206d757374206265206772656174657281526020017f207468616e207a65726f0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111151515610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752068617665206e6f7420656e6f75676820746f6b656e7300000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f596f752063616e6e6f74207472616e7366657220746f6b656e7320746f20796f81526020017f757273656c66000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61103c87600460408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b94509450600085141515156110b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b6110c28561227e565b925092506000831415151561113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b81600881905550611150338861237b565b61115a8885611e9e565b61116f83600a54611fb490919063ffffffff16565b600a819055508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a360019550505050505092915050565b6000806000808514806111fe57506000600954145b1561120c576000925061126c565b60095485111561121c5760095494505b6112258561227e565b50915083156112685761126182600260408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9150508091505b8192505b505092915050565b60008060008085141561128a57600092506112da565b83156112ca576112c385600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9250508194505b6112d385611d35565b5090508092505b505092915050565b600080600080600085600081111515611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f416d6f756e74206f6620746f6b656e73206d757374206265206772656174657281526020017f207468616e207a65726f0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111151515611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752068617665206e6f7420656e6f75676820746f6b656e7300000000000081525060200191505060405180910390fd5b61144c8761227e565b95509550600086141515156114c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b8460088190555061150386600260408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9350935060008414151515611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b61158a338861237b565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506115e2838360020154611fb490919063ffffffff16565b82600201819055506115ff84600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167fafd310387603da0dcf44f11f54b04254b548c58b194e75f85851e849f0eef3078888670de0b6b3a764000060085481151561165457fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060008111156116e3576116e2816112e2565b5b6116eb610b7a565b50565b61170334600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f106aac375bbcf013d1e52338bbf9e740009a1a3a6869f8daa1b72aa1620f5fec3442604051808381526020018281526020019250505060405180910390a2565b60008060008060008061177333610978565b95506000861115156117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f752068617665206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002094506118458686600401546120e590919063ffffffff16565b856004018190555061188086600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9350935060008414151515611923576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a3957611997338660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168689611bf7565b935060008414151515611a38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b611a4283611d35565b9150915060008214151515611ae5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600881905550611af63383611e9e565b611b0b84600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f1abe689c7914cafd54f789eb0851e90cba235302161e81e259ee4c357c374d828784670de0b6b3a7640000600854811515611b6057fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b6000806000831415611bb25760008081915080905091509150611bf0565b8360200151611bce85600001518561203e90919063ffffffff16565b811515611bd757fe5b049150611bed82846121f990919063ffffffff16565b90505b9250929050565b600080600080600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250678ac7230489e800008360010154101515611d2657611c8686600660408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b91509150611ca1828460030154611fb490919063ffffffff16565b83600301819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f870e4e1dcfab6c09707448d3659b3d8097c084bf06e7467d6029940cd7122ee087854260405180848152602001838152602001828152602001935050505060405180910390a3809350611d2a565b8593505b505050949350505050565b600080600080600080611d726b204fce5e3e25026110000000611d64600260085461203e90919063ffffffff16565b6121f990919063ffffffff16565b9350611de4611dc3670de0b6b3a7640000611db58a611da760086b204fce5e3e2502611000000061203e90919063ffffffff16565b61203e90919063ffffffff16565b61203e90919063ffffffff16565b611dd6868761203e90919063ffffffff16565b611fb490919063ffffffff16565b9250611e0660026b204fce5e3e2502611000000061203e90919063ffffffff16565b611e3b670de0b6b3a7640000611e2d87611e1f886124ed565b6121f990919063ffffffff16565b61203e90919063ffffffff16565b811515611e4457fe5b049150611e8d670de0b6b3a7640000611e72846b204fce5e3e2502611000000061203e90919063ffffffff16565b811515611e7b57fe5b04600854611fb490919063ffffffff16565b905081819550955050505050915091565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020915060006009541190508015611f2d57600954611f1c611f0b85600954611fb490919063ffffffff16565b600a5461203e90919063ffffffff16565b811515611f2557fe5b04600a819055505b611f4283600954611fb490919063ffffffff16565b600981905550611f5f838360010154611fb490919063ffffffff16565b82600101819055508015611fae57611fa5600954611f88600a548661203e90919063ffffffff16565b811515611f9157fe5b0483600401546120e590919063ffffffff16565b82600401819055505b50505050565b6000808284019050838110151515612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616464206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b600080600084141561205357600091506120de565b828402905082848281151561206457fe5b041415156120da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6d756c206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505b5092915050565b6000808284019050838112151515612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616464206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b60008082840390508381131515156121ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f737562206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b6000828211151515612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f737562206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b60008060008060006122a76b204fce5e3e250261100000006008546121f990919063ffffffff16565b925061230b670de0b6b3a76400006122d4886b204fce5e3e2502611000000061203e90919063ffffffff16565b8115156122dd57fe5b046122fd6b204fce5e3e2502611000000086611fb490919063ffffffff16565b6121f990919063ffffffff16565b91506123296002670de0b6b3a764000061203e90919063ffffffff16565b61234e876123408587611fb490919063ffffffff16565b61203e90919063ffffffff16565b81151561235757fe5b049050670de0b6b3a76400008181151561236d57fe5b048294509450505050915091565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150600090508260095414156123f6576009546123e98360010154600a5461203e90919063ffffffff16565b8115156123f257fe5b0490505b600954612422612411856009546121f990919063ffffffff16565b600a5461203e90919063ffffffff16565b81151561242b57fe5b04600a81905550612447836009546121f990919063ffffffff16565b6009819055506124648383600101546121f990919063ffffffff16565b8260010181905550600060095411156124bc576124af600954612492600a548661203e90919063ffffffff16565b81151561249b57fe5b04836004015461216f90919063ffffffff16565b82600401819055506124e7565b6000811415156124e6576124dd81836004015461216f90919063ffffffff16565b82600401819055505b5b50505050565b60008060026124fd846001611fb4565b81151561250657fe5b0490508291505b8181101561254057809150600261252f828581151561252857fe5b0483611fb4565b81151561253857fe5b04905061250d565b50919050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820d955d83e2f50a5c7177643dd267b780a8970bb1eab8c7cc7e550b3edf856cb5f0029
Swarm Source
bzzr://d955d83e2f50a5c7177643dd267b780a8970bb1eab8c7cc7e550b3edf856cb5f
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.