ETH Price: $3,266.98 (+4.60%)
Gas: 2 Gwei

Token

Trading Simulator (SIM)
 

Overview

Max Total Supply

1,000,000 SIM

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: SIM 13
Balance
0.000000000000620306 SIM

Value
$0.00
0x55ae8bf8ae4250bf542fc3ea0bbe2db22101619a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-01-19
*/

/*
   
   SPDX-License-Identifier: Unlicensed

// TG: https://t.me/TradingSimETH

// Twitter: https://twitter.com/TradingSimETH

// Web: https://TradingSimulator.tech

   
   */
   
   pragma solidity 0.8.23;
   
   abstract contract Context {
       function _msgSender() internal view virtual returns (address) {
           return msg.sender;
       }
   }
   
   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
       );
   }
   
   contract Ownable is Context {
       address private _owner;
       address private _previousOwner;
       event OwnershipTransferred(
           address indexed previousOwner,
           address indexed newOwner
       );
   
       constructor() {
           address msgSender = _msgSender();
           _owner = msgSender;
           emit OwnershipTransferred(address(0), msgSender);
       }
   
       function owner() public view returns (address) {
           return _owner;
       }
   
       modifier onlyOwner() {
           require(_owner == _msgSender(), "Ownable: caller is not the owner");
           _;
       }
       
       function renounceOwnership() public virtual onlyOwner {
           emit OwnershipTransferred(_owner, address(0));
           _owner = address(0);
       }
   }
   
   interface IUniswapV2Factory {
       function createPair(
           address tokenA,
           address tokenB
       ) external returns (address pair);
   }
   
   interface IUniswapV2Router02 {
       function swapExactTokensForETHSupportingFeeOnTransferTokens(
           uint amountIn,
           uint amountOutMin,
           address[] calldata path,
           address to,
           uint deadline
       ) external;
   
       function factory() external pure returns (address);
   
       function WETH() external pure returns (address);
   
       function addLiquidityETH(
           address token,
           uint amountTokenDesired,
           uint amountTokenMin,
           uint amountETHMin,
           address to,
           uint deadline
       )
           external
           payable
           returns (uint amountToken, uint amountETH, uint liquidity);
   }
   
   contract ERC20 is Context, IERC20, Ownable {
       uint256 private constant _totalSupply = 1_000_000e18;
       uint256 private twoPercent = 20_000e18;
       uint256 private constant minSwap = 1_0000e18;
       uint8 private constant _decimals = 18;
   
       IUniswapV2Router02 immutable uniswapV2Router;
       address immutable uniswapV2Pair;
       address immutable WETH;
       address payable immutable marketingWallet;
   
       uint256 public buyTax;
       uint256 public sellTax;
   
       uint8 private launch;
       uint8 private inSwapAndLiquify;
   
       uint256 private launchBlock;
       uint256 public maxTxAmount = 20_000e18; //max Tx
   
       string public constant _name = "Trading Simulator";
       string public constant _symbol = "SIM";
   
       mapping(address => uint256) private _balance;
       mapping(address => mapping(address => uint256)) private _allowances;
       mapping(address => bool) private _isExcludedFromFeeWallet;
   
       constructor() {
           
           uniswapV2Router = IUniswapV2Router02(
               0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
           );
           WETH = uniswapV2Router.WETH();
           buyTax = 20;
           sellTax = 20;
   
           uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
               address(this),
               WETH
           );
   
           marketingWallet = payable(msg.sender);
           _balance[address(this)] = _totalSupply;
           _isExcludedFromFeeWallet[marketingWallet] = true;
           _isExcludedFromFeeWallet[msg.sender] = true;
           _isExcludedFromFeeWallet[address(this)] = true;
           _allowances[address(this)][address(uniswapV2Router)] = type(uint256)
               .max;
           _allowances[msg.sender][address(uniswapV2Router)] = type(uint256).max;
           _allowances[marketingWallet][address(uniswapV2Router)] = type(uint256)
               .max;
   
           emit Transfer(address(0), _msgSender(), _totalSupply);
       }
   
       function name() public pure returns (string memory) {
           return _name;
       }
   
       function symbol() public pure returns (string memory) {
           return _symbol;
       }
   
       function decimals() public pure returns (uint8) {
           return _decimals;
       }
   
       function totalSupply() public pure override returns (uint256) {
           return _totalSupply;
       }
   
       function balanceOf(address account) public view override returns (uint256) {
           return _balance[account];
       }
   
       function transfer(
           address recipient,
           uint256 amount
       ) public override returns (bool) {
           _transfer(_msgSender(), recipient, amount);
           return true;
       }
   
       function allowance(
           address owner,
           address spender
       ) public view override returns (uint256) {
           return _allowances[owner][spender];
       }
   
       function approve(
           address spender,
           uint256 amount
       ) public override returns (bool) {
           _approve(_msgSender(), spender, amount);
           return true;
       }
   
       function transferFrom(
           address sender,
           address recipient,
           uint256 amount
       ) public override returns (bool) {
           _transfer(sender, recipient, amount);
           _approve(
               sender,
               _msgSender(),
               _allowances[sender][_msgSender()] - amount
           );
           return true;
       }
   
       function _approve(address owner, address spender, uint256 amount) private {
           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);
       }
   
       function addLp() external payable onlyOwner {
           _approve(address(this), address(uniswapV2Router), type(uint).max);
           uniswapV2Router.addLiquidityETH{value: msg.value}(
               address(this),
               balanceOf(address(this)),
               0,
               0,
               owner(),
               block.timestamp
           );
           IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
       }
   
       function openTrading() external onlyOwner {
           launch = 1;
           launchBlock = block.number;
       }
   
       function removeLimits(uint256 finalTaxRate) external onlyOwner {
           require(finalTaxRate <= 5, "Cannot set tax greater than 5%");
           maxTxAmount = _totalSupply;
           twoPercent = _totalSupply;
           buyTax = finalTaxRate;
           sellTax = finalTaxRate;
       }
   
     
   
       function _transfer(address from, address to, uint256 amount) private {
           require(from != address(0), "ERC20: transfer from the zero address");
           require(amount > 1e9, "Min transfer amt");
   
           uint256 _tax;
           if (_isExcludedFromFeeWallet[from] || _isExcludedFromFeeWallet[to]) {
               _tax = 0;
           } else {
               require(
                   launch != 0 && amount <= maxTxAmount,
                   "Launch / Max TxAmount 2% at launch"
               );
   
               if (inSwapAndLiquify == 1) {
                   //No tax transfer
                   _balance[from] -= amount;
                   _balance[to] += amount;
   
                   emit Transfer(from, to, amount);
                   return;
               }
   
               if (from == uniswapV2Pair) {
                   _tax = buyTax;
               } else if (to == uniswapV2Pair) {
                   uint256 tokensToSwap = _balance[address(this)];
                   if (tokensToSwap > minSwap && inSwapAndLiquify == 0) {
                       if (tokensToSwap > twoPercent) {
                           tokensToSwap = twoPercent;
                       }
                       inSwapAndLiquify = 1;
                       address[] memory path = new address[](2);
                       path[0] = address(this);
                       path[1] = WETH;
                       uniswapV2Router
                           .swapExactTokensForETHSupportingFeeOnTransferTokens(
                               tokensToSwap,
                               0,
                               path,
                               marketingWallet,
                               block.timestamp
                           );
                       inSwapAndLiquify = 0;
                   }
                   _tax = sellTax;
               } else {
                   _tax = 0;
               }
           }
   
           //Is there tax for sender|receiver?
           if (_tax != 0) {
               //Tax transfer
               uint256 taxTokens = (amount * _tax) / 100;
               uint256 transferAmount = amount - taxTokens;
   
               _balance[from] -= amount;
               _balance[to] += transferAmount;
               _balance[address(this)] += taxTokens;
               emit Transfer(from, address(this), taxTokens);
               emit Transfer(from, to, transferAmount);
           } else {
               //No tax transfer
               _balance[from] -= amount;
               _balance[to] += amount;
   
               emit Transfer(from, to, amount);
           }
       }
   
       receive() external payable {}
   }

Contract Security Audit

Contract ABI

[{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLp","outputs":[],"stateMutability":"payable","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":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"finalTaxRate","type":"uint256"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

61010060405269043c33c193756480000060025569043c33c19375648000006007553480156200002d575f80fd5b505f6200003f620006e460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000195919062000750565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506014600381905550601460048190555060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000224573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024a919062000750565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060c0516040518363ffffffff1660e01b81526004016200028892919062000791565b6020604051808303815f875af1158015620002a5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cb919062000750565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250503373ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505069d3c21bcecceda100000060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600a5f60e05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f60e05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506200066e620006e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda1000000604051620006d69190620007d6565b60405180910390a3620007f1565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200071a82620006ef565b9050919050565b6200072c816200070e565b811462000737575f80fd5b50565b5f815190506200074a8162000721565b92915050565b5f60208284031215620007685762000767620006eb565b5b5f62000777848285016200073a565b91505092915050565b6200078b816200070e565b82525050565b5f604082019050620007a65f83018562000780565b620007b5602083018462000780565b9392505050565b5f819050919050565b620007d081620007bc565b82525050565b5f602082019050620007eb5f830184620007c5565b92915050565b60805160a05160c05160e0516122e3620008485f395f61141301525f61136501525f818161070e0152818161117e01526111db01525f8181610610015281816106570152818161074a01526113d401526122e35ff3fe608060405260043610610117575f3560e01c80638c0b5e221161009f578063c9567bf911610063578063c9567bf914610382578063cc1776d314610398578063d28d8852146103c2578063dd62ed3e146103ec578063e559d86a146104285761011e565b80638c0b5e221461029e5780638da5cb5b146102c857806395d89b41146102f2578063a9059cbb1461031c578063b09f1266146103585761011e565b8063313ce567116100e6578063313ce567146101ee578063427a5c02146102185780634f7041a51461022257806370a082311461024c578063715018a6146102885761011e565b806306fdde0314610122578063095ea7b31461014c57806318160ddd1461018857806323b872dd146101b25761011e565b3661011e57005b5f80fd5b34801561012d575f80fd5b50610136610450565b6040516101439190611846565b60405180910390f35b348015610157575f80fd5b50610172600480360381019061016d91906118f7565b61048d565b60405161017f919061194f565b60405180910390f35b348015610193575f80fd5b5061019c6104aa565b6040516101a99190611977565b60405180910390f35b3480156101bd575f80fd5b506101d860048036038101906101d39190611990565b6104bb565b6040516101e5919061194f565b60405180910390f35b3480156101f9575f80fd5b5061020261056e565b60405161020f91906119fb565b60405180910390f35b610220610576565b005b34801561022d575f80fd5b506102366107ea565b6040516102439190611977565b60405180910390f35b348015610257575f80fd5b50610272600480360381019061026d9190611a14565b6107f0565b60405161027f9190611977565b60405180910390f35b348015610293575f80fd5b5061029c610836565b005b3480156102a9575f80fd5b506102b2610984565b6040516102bf9190611977565b60405180910390f35b3480156102d3575f80fd5b506102dc61098a565b6040516102e99190611a4e565b60405180910390f35b3480156102fd575f80fd5b506103066109b1565b6040516103139190611846565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d91906118f7565b6109ee565b60405161034f919061194f565b60405180910390f35b348015610363575f80fd5b5061036c610a0b565b6040516103799190611846565b60405180910390f35b34801561038d575f80fd5b50610396610a44565b005b3480156103a3575f80fd5b506103ac610afc565b6040516103b99190611977565b60405180910390f35b3480156103cd575f80fd5b506103d6610b02565b6040516103e39190611846565b60405180910390f35b3480156103f7575f80fd5b50610412600480360381019061040d9190611a67565b610b3b565b60405161041f9190611977565b60405180910390f35b348015610433575f80fd5b5061044e60048036038101906104499190611aa5565b610bbd565b005b60606040518060400160405280601181526020017f54726164696e672053696d756c61746f72000000000000000000000000000000815250905090565b5f6104a0610499610cc8565b8484610ccf565b6001905092915050565b5f69d3c21bcecceda1000000905090565b5f6104c7848484610e92565b610563846104d3610cc8565b8460095f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61051a610cc8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461055e9190611afd565b610ccf565b600190509392505050565b5f6012905090565b61057e610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060190611b7a565b60405180910390fd5b610655307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ccf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719343061069c306107f0565b5f806106a661098a565b426040518863ffffffff1660e01b81526004016106c896959493929190611bda565b60606040518083038185885af11580156106e4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906107099190611c4d565b5050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016107a7929190611c9d565b6020604051808303815f875af11580156107c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e79190611cee565b50565b60035481565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61083e610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c190611b7a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f53494d0000000000000000000000000000000000000000000000000000000000815250905090565b5f610a016109fa610cc8565b8484610e92565b6001905092915050565b6040518060400160405280600381526020017f53494d000000000000000000000000000000000000000000000000000000000081525081565b610a4c610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90611b7a565b60405180910390fd5b600160055f6101000a81548160ff021916908360ff16021790555043600681905550565b60045481565b6040518060400160405280601181526020017f54726164696e672053696d756c61746f7200000000000000000000000000000081525081565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610bc5610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4890611b7a565b60405180910390fd5b6005811115610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90611d63565b60405180910390fd5b69d3c21bcecceda100000060078190555069d3c21bcecceda1000000600281905550806003819055508060048190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490611df1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da290611e7f565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e859190611977565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790611f0d565b60405180910390fd5b633b9aca008111610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d90611f75565b60405180910390fd5b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680610fe25750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610fef575f90506114ae565b5f60055f9054906101000a900460ff1660ff161415801561101257506007548211155b611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890612003565b60405180910390fd5b6001600560019054906101000a900460ff1660ff160361117c578160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110b79190611afd565b925050819055508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461110a9190612021565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161116e9190611977565b60405180910390a3506117b7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111d95760035490506114ad565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114a8575f60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905069021e19e0c9bab24000008111801561129757505f600560019054906101000a900460ff1660ff16145b1561149d576002548111156112ac5760025490505b6001600560016101000a81548160ff021916908360ff1602179055505f600267ffffffffffffffff8111156112e4576112e3612054565b5b6040519080825280602002602001820160405280156113125781602001602082028036833780820191505090505b50905030815f8151811061132957611328612081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061139857611397612081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f847f0000000000000000000000000000000000000000000000000000000000000000426040518663ffffffff1660e01b81526004016114539594939291906121b7565b5f604051808303815f87803b15801561146a575f80fd5b505af115801561147c573d5f803e3d5ffd5b505050505f600560016101000a81548160ff021916908360ff160217905550505b6004549150506114ac565b5f90505b5b5b5f81146116a9575f606482846114c4919061220f565b6114ce919061227d565b90505f81846114dd9190611afd565b90508360085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461152b9190611afd565b925050819055508060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461157e9190612021565b925050819055508160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115d19190612021565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116359190611977565b60405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161169a9190611977565b60405180910390a350506117b5565b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116f59190611afd565b925050819055508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117489190612021565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117ac9190611977565b60405180910390a35b505b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156117f35780820151818401526020810190506117d8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611818826117bc565b61182281856117c6565b93506118328185602086016117d6565b61183b816117fe565b840191505092915050565b5f6020820190508181035f83015261185e818461180e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118938261186a565b9050919050565b6118a381611889565b81146118ad575f80fd5b50565b5f813590506118be8161189a565b92915050565b5f819050919050565b6118d6816118c4565b81146118e0575f80fd5b50565b5f813590506118f1816118cd565b92915050565b5f806040838503121561190d5761190c611866565b5b5f61191a858286016118b0565b925050602061192b858286016118e3565b9150509250929050565b5f8115159050919050565b61194981611935565b82525050565b5f6020820190506119625f830184611940565b92915050565b611971816118c4565b82525050565b5f60208201905061198a5f830184611968565b92915050565b5f805f606084860312156119a7576119a6611866565b5b5f6119b4868287016118b0565b93505060206119c5868287016118b0565b92505060406119d6868287016118e3565b9150509250925092565b5f60ff82169050919050565b6119f5816119e0565b82525050565b5f602082019050611a0e5f8301846119ec565b92915050565b5f60208284031215611a2957611a28611866565b5b5f611a36848285016118b0565b91505092915050565b611a4881611889565b82525050565b5f602082019050611a615f830184611a3f565b92915050565b5f8060408385031215611a7d57611a7c611866565b5b5f611a8a858286016118b0565b9250506020611a9b858286016118b0565b9150509250929050565b5f60208284031215611aba57611ab9611866565b5b5f611ac7848285016118e3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b07826118c4565b9150611b12836118c4565b9250828203905081811115611b2a57611b29611ad0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611b646020836117c6565b9150611b6f82611b30565b602082019050919050565b5f6020820190508181035f830152611b9181611b58565b9050919050565b5f819050919050565b5f819050919050565b5f611bc4611bbf611bba84611b98565b611ba1565b6118c4565b9050919050565b611bd481611baa565b82525050565b5f60c082019050611bed5f830189611a3f565b611bfa6020830188611968565b611c076040830187611bcb565b611c146060830186611bcb565b611c216080830185611a3f565b611c2e60a0830184611968565b979650505050505050565b5f81519050611c47816118cd565b92915050565b5f805f60608486031215611c6457611c63611866565b5b5f611c7186828701611c39565b9350506020611c8286828701611c39565b9250506040611c9386828701611c39565b9150509250925092565b5f604082019050611cb05f830185611a3f565b611cbd6020830184611968565b9392505050565b611ccd81611935565b8114611cd7575f80fd5b50565b5f81519050611ce881611cc4565b92915050565b5f60208284031215611d0357611d02611866565b5b5f611d1084828501611cda565b91505092915050565b7f43616e6e6f7420736574207461782067726561746572207468616e20352500005f82015250565b5f611d4d601e836117c6565b9150611d5882611d19565b602082019050919050565b5f6020820190508181035f830152611d7a81611d41565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611ddb6024836117c6565b9150611de682611d81565b604082019050919050565b5f6020820190508181035f830152611e0881611dcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611e696022836117c6565b9150611e7482611e0f565b604082019050919050565b5f6020820190508181035f830152611e9681611e5d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611ef76025836117c6565b9150611f0282611e9d565b604082019050919050565b5f6020820190508181035f830152611f2481611eeb565b9050919050565b7f4d696e207472616e7366657220616d74000000000000000000000000000000005f82015250565b5f611f5f6010836117c6565b9150611f6a82611f2b565b602082019050919050565b5f6020820190508181035f830152611f8c81611f53565b9050919050565b7f4c61756e6368202f204d6178205478416d6f756e74203225206174206c61756e5f8201527f6368000000000000000000000000000000000000000000000000000000000000602082015250565b5f611fed6022836117c6565b9150611ff882611f93565b604082019050919050565b5f6020820190508181035f83015261201a81611fe1565b9050919050565b5f61202b826118c4565b9150612036836118c4565b925082820190508082111561204e5761204d611ad0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6120e081611889565b82525050565b5f6120f183836120d7565b60208301905092915050565b5f602082019050919050565b5f612113826120ae565b61211d81856120b8565b9350612128836120c8565b805f5b8381101561215857815161213f88826120e6565b975061214a836120fd565b92505060018101905061212b565b5085935050505092915050565b5f61217f61217a6121758461186a565b611ba1565b61186a565b9050919050565b5f61219082612165565b9050919050565b5f6121a182612186565b9050919050565b6121b181612197565b82525050565b5f60a0820190506121ca5f830188611968565b6121d76020830187611bcb565b81810360408301526121e98186612109565b90506121f860608301856121a8565b6122056080830184611968565b9695505050505050565b5f612219826118c4565b9150612224836118c4565b9250828202612232816118c4565b9150828204841483151761224957612248611ad0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612287826118c4565b9150612292836118c4565b9250826122a2576122a1612250565b5b82820490509291505056fea26469706673582212208ad0484acc44c91342abb20f82640536c8a0f4c7ffbe710632190eea02d5346864736f6c63430008170033

Deployed Bytecode

0x608060405260043610610117575f3560e01c80638c0b5e221161009f578063c9567bf911610063578063c9567bf914610382578063cc1776d314610398578063d28d8852146103c2578063dd62ed3e146103ec578063e559d86a146104285761011e565b80638c0b5e221461029e5780638da5cb5b146102c857806395d89b41146102f2578063a9059cbb1461031c578063b09f1266146103585761011e565b8063313ce567116100e6578063313ce567146101ee578063427a5c02146102185780634f7041a51461022257806370a082311461024c578063715018a6146102885761011e565b806306fdde0314610122578063095ea7b31461014c57806318160ddd1461018857806323b872dd146101b25761011e565b3661011e57005b5f80fd5b34801561012d575f80fd5b50610136610450565b6040516101439190611846565b60405180910390f35b348015610157575f80fd5b50610172600480360381019061016d91906118f7565b61048d565b60405161017f919061194f565b60405180910390f35b348015610193575f80fd5b5061019c6104aa565b6040516101a99190611977565b60405180910390f35b3480156101bd575f80fd5b506101d860048036038101906101d39190611990565b6104bb565b6040516101e5919061194f565b60405180910390f35b3480156101f9575f80fd5b5061020261056e565b60405161020f91906119fb565b60405180910390f35b610220610576565b005b34801561022d575f80fd5b506102366107ea565b6040516102439190611977565b60405180910390f35b348015610257575f80fd5b50610272600480360381019061026d9190611a14565b6107f0565b60405161027f9190611977565b60405180910390f35b348015610293575f80fd5b5061029c610836565b005b3480156102a9575f80fd5b506102b2610984565b6040516102bf9190611977565b60405180910390f35b3480156102d3575f80fd5b506102dc61098a565b6040516102e99190611a4e565b60405180910390f35b3480156102fd575f80fd5b506103066109b1565b6040516103139190611846565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d91906118f7565b6109ee565b60405161034f919061194f565b60405180910390f35b348015610363575f80fd5b5061036c610a0b565b6040516103799190611846565b60405180910390f35b34801561038d575f80fd5b50610396610a44565b005b3480156103a3575f80fd5b506103ac610afc565b6040516103b99190611977565b60405180910390f35b3480156103cd575f80fd5b506103d6610b02565b6040516103e39190611846565b60405180910390f35b3480156103f7575f80fd5b50610412600480360381019061040d9190611a67565b610b3b565b60405161041f9190611977565b60405180910390f35b348015610433575f80fd5b5061044e60048036038101906104499190611aa5565b610bbd565b005b60606040518060400160405280601181526020017f54726164696e672053696d756c61746f72000000000000000000000000000000815250905090565b5f6104a0610499610cc8565b8484610ccf565b6001905092915050565b5f69d3c21bcecceda1000000905090565b5f6104c7848484610e92565b610563846104d3610cc8565b8460095f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61051a610cc8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461055e9190611afd565b610ccf565b600190509392505050565b5f6012905090565b61057e610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060190611b7a565b60405180910390fd5b610655307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ccf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719343061069c306107f0565b5f806106a661098a565b426040518863ffffffff1660e01b81526004016106c896959493929190611bda565b60606040518083038185885af11580156106e4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906107099190611c4d565b5050507f00000000000000000000000055ae8bf8ae4250bf542fc3ea0bbe2db22101619a73ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016107a7929190611c9d565b6020604051808303815f875af11580156107c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e79190611cee565b50565b60035481565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61083e610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c190611b7a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f53494d0000000000000000000000000000000000000000000000000000000000815250905090565b5f610a016109fa610cc8565b8484610e92565b6001905092915050565b6040518060400160405280600381526020017f53494d000000000000000000000000000000000000000000000000000000000081525081565b610a4c610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90611b7a565b60405180910390fd5b600160055f6101000a81548160ff021916908360ff16021790555043600681905550565b60045481565b6040518060400160405280601181526020017f54726164696e672053696d756c61746f7200000000000000000000000000000081525081565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610bc5610cc8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4890611b7a565b60405180910390fd5b6005811115610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90611d63565b60405180910390fd5b69d3c21bcecceda100000060078190555069d3c21bcecceda1000000600281905550806003819055508060048190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490611df1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da290611e7f565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e859190611977565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790611f0d565b60405180910390fd5b633b9aca008111610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d90611f75565b60405180910390fd5b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680610fe25750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610fef575f90506114ae565b5f60055f9054906101000a900460ff1660ff161415801561101257506007548211155b611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890612003565b60405180910390fd5b6001600560019054906101000a900460ff1660ff160361117c578160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110b79190611afd565b925050819055508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461110a9190612021565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161116e9190611977565b60405180910390a3506117b7565b7f00000000000000000000000055ae8bf8ae4250bf542fc3ea0bbe2db22101619a73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111d95760035490506114ad565b7f00000000000000000000000055ae8bf8ae4250bf542fc3ea0bbe2db22101619a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114a8575f60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905069021e19e0c9bab24000008111801561129757505f600560019054906101000a900460ff1660ff16145b1561149d576002548111156112ac5760025490505b6001600560016101000a81548160ff021916908360ff1602179055505f600267ffffffffffffffff8111156112e4576112e3612054565b5b6040519080825280602002602001820160405280156113125781602001602082028036833780820191505090505b50905030815f8151811061132957611328612081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061139857611397612081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f847f000000000000000000000000955cd0c6f1e5a6c7b5350342c906d0e7b360a69d426040518663ffffffff1660e01b81526004016114539594939291906121b7565b5f604051808303815f87803b15801561146a575f80fd5b505af115801561147c573d5f803e3d5ffd5b505050505f600560016101000a81548160ff021916908360ff160217905550505b6004549150506114ac565b5f90505b5b5b5f81146116a9575f606482846114c4919061220f565b6114ce919061227d565b90505f81846114dd9190611afd565b90508360085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461152b9190611afd565b925050819055508060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461157e9190612021565b925050819055508160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115d19190612021565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116359190611977565b60405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161169a9190611977565b60405180910390a350506117b5565b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116f59190611afd565b925050819055508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117489190612021565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117ac9190611977565b60405180910390a35b505b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156117f35780820151818401526020810190506117d8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611818826117bc565b61182281856117c6565b93506118328185602086016117d6565b61183b816117fe565b840191505092915050565b5f6020820190508181035f83015261185e818461180e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118938261186a565b9050919050565b6118a381611889565b81146118ad575f80fd5b50565b5f813590506118be8161189a565b92915050565b5f819050919050565b6118d6816118c4565b81146118e0575f80fd5b50565b5f813590506118f1816118cd565b92915050565b5f806040838503121561190d5761190c611866565b5b5f61191a858286016118b0565b925050602061192b858286016118e3565b9150509250929050565b5f8115159050919050565b61194981611935565b82525050565b5f6020820190506119625f830184611940565b92915050565b611971816118c4565b82525050565b5f60208201905061198a5f830184611968565b92915050565b5f805f606084860312156119a7576119a6611866565b5b5f6119b4868287016118b0565b93505060206119c5868287016118b0565b92505060406119d6868287016118e3565b9150509250925092565b5f60ff82169050919050565b6119f5816119e0565b82525050565b5f602082019050611a0e5f8301846119ec565b92915050565b5f60208284031215611a2957611a28611866565b5b5f611a36848285016118b0565b91505092915050565b611a4881611889565b82525050565b5f602082019050611a615f830184611a3f565b92915050565b5f8060408385031215611a7d57611a7c611866565b5b5f611a8a858286016118b0565b9250506020611a9b858286016118b0565b9150509250929050565b5f60208284031215611aba57611ab9611866565b5b5f611ac7848285016118e3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b07826118c4565b9150611b12836118c4565b9250828203905081811115611b2a57611b29611ad0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611b646020836117c6565b9150611b6f82611b30565b602082019050919050565b5f6020820190508181035f830152611b9181611b58565b9050919050565b5f819050919050565b5f819050919050565b5f611bc4611bbf611bba84611b98565b611ba1565b6118c4565b9050919050565b611bd481611baa565b82525050565b5f60c082019050611bed5f830189611a3f565b611bfa6020830188611968565b611c076040830187611bcb565b611c146060830186611bcb565b611c216080830185611a3f565b611c2e60a0830184611968565b979650505050505050565b5f81519050611c47816118cd565b92915050565b5f805f60608486031215611c6457611c63611866565b5b5f611c7186828701611c39565b9350506020611c8286828701611c39565b9250506040611c9386828701611c39565b9150509250925092565b5f604082019050611cb05f830185611a3f565b611cbd6020830184611968565b9392505050565b611ccd81611935565b8114611cd7575f80fd5b50565b5f81519050611ce881611cc4565b92915050565b5f60208284031215611d0357611d02611866565b5b5f611d1084828501611cda565b91505092915050565b7f43616e6e6f7420736574207461782067726561746572207468616e20352500005f82015250565b5f611d4d601e836117c6565b9150611d5882611d19565b602082019050919050565b5f6020820190508181035f830152611d7a81611d41565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611ddb6024836117c6565b9150611de682611d81565b604082019050919050565b5f6020820190508181035f830152611e0881611dcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611e696022836117c6565b9150611e7482611e0f565b604082019050919050565b5f6020820190508181035f830152611e9681611e5d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611ef76025836117c6565b9150611f0282611e9d565b604082019050919050565b5f6020820190508181035f830152611f2481611eeb565b9050919050565b7f4d696e207472616e7366657220616d74000000000000000000000000000000005f82015250565b5f611f5f6010836117c6565b9150611f6a82611f2b565b602082019050919050565b5f6020820190508181035f830152611f8c81611f53565b9050919050565b7f4c61756e6368202f204d6178205478416d6f756e74203225206174206c61756e5f8201527f6368000000000000000000000000000000000000000000000000000000000000602082015250565b5f611fed6022836117c6565b9150611ff882611f93565b604082019050919050565b5f6020820190508181035f83015261201a81611fe1565b9050919050565b5f61202b826118c4565b9150612036836118c4565b925082820190508082111561204e5761204d611ad0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6120e081611889565b82525050565b5f6120f183836120d7565b60208301905092915050565b5f602082019050919050565b5f612113826120ae565b61211d81856120b8565b9350612128836120c8565b805f5b8381101561215857815161213f88826120e6565b975061214a836120fd565b92505060018101905061212b565b5085935050505092915050565b5f61217f61217a6121758461186a565b611ba1565b61186a565b9050919050565b5f61219082612165565b9050919050565b5f6121a182612186565b9050919050565b6121b181612197565b82525050565b5f60a0820190506121ca5f830188611968565b6121d76020830187611bcb565b81810360408301526121e98186612109565b90506121f860608301856121a8565b6122056080830184611968565b9695505050505050565b5f612219826118c4565b9150612224836118c4565b9250828202612232816118c4565b9150828204841483151761224957612248611ad0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612287826118c4565b9150612292836118c4565b9250826122a2576122a1612250565b5b82820490509291505056fea26469706673582212208ad0484acc44c91342abb20f82640536c8a0f4c7ffbe710632190eea02d5346864736f6c63430008170033

Deployed Bytecode Sourcemap

3045:7745:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5132:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6124:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5445:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6342:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5342:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7106:465;;;:::i;:::-;;3497:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5565:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1953:157;;;;;;;;;;;;;:::i;:::-;;3677:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1708:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5235:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5703:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3799:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7585:117;;;;;;;;;;;;;:::i;:::-;;3528:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3739:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5927:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7716:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5132:89;5169:13;5205:5;;;;;;;;;;;;;;;;;5198:12;;5132:89;:::o;6124:204::-;6233:4;6253:39;6262:12;:10;:12::i;:::-;6276:7;6285:6;6253:8;:39::i;:::-;6313:4;6306:11;;6124:204;;;;:::o;5445:106::-;5498:7;3138:12;5521:19;;5445:106;:::o;6342:386::-;6486:4;6506:36;6516:6;6524:9;6535:6;6506:9;:36::i;:::-;6556:136;6582:6;6606:12;:10;:12::i;:::-;6672:6;6636:11;:19;6648:6;6636:19;;;;;;;;;;;;;;;:33;6656:12;:10;:12::i;:::-;6636:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6556:8;:136::i;:::-;6713:4;6706:11;;6342:386;;;;;:::o;5342:89::-;5383:5;3297:2;5404:16;;5342:89;:::o;7106:465::-;1860:12;:10;:12::i;:::-;1850:22;;:6;;;;;;;;;;:22;;;1842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7164:65:::1;7181:4;7196:15;7214:14;7164:8;:65::i;:::-;7243:15;:31;;;7282:9;7318:4;7341:24;7359:4;7341:9;:24::i;:::-;7383:1;7402::::0;7421:7:::1;:5;:7::i;:::-;7446:15;7243:232;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7496:13;7489:29;;;7527:15;7545:14;7489:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7106:465::o:0;3497:21::-;;;;:::o;5565:124::-;5631:7;5661:8;:17;5670:7;5661:17;;;;;;;;;;;;;;;;5654:24;;5565:124;;;:::o;1953:157::-;1860:12;:10;:12::i;:::-;1850:22;;:6;;;;;;;;;;:22;;;1842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2063:1:::1;2026:40;;2047:6;::::0;::::1;;;;;;;;2026:40;;;;;;;;;;;;2097:1;2080:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1953:157::o:0;3677:38::-;;;;:::o;1708:85::-;1746:7;1776:6;;;;;;;;;;;1769:13;;1708:85;:::o;5235:93::-;5274:13;5310:7;;;;;;;;;;;;;;;;;5303:14;;5235:93;:::o;5703:210::-;5815:4;5835:42;5845:12;:10;:12::i;:::-;5859:9;5870:6;5835:9;:42::i;:::-;5898:4;5891:11;;5703:210;;;;:::o;3799:38::-;;;;;;;;;;;;;;;;;;;:::o;7585:117::-;1860:12;:10;:12::i;:::-;1850:22;;:6;;;;;;;;;;:22;;;1842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7650:1:::1;7641:6;;:10;;;;;;;;;;;;;;;;;;7679:12;7665:11;:26;;;;7585:117::o:0;3528:22::-;;;;:::o;3739:50::-;;;;;;;;;;;;;;;;;;;:::o;5927:183::-;6042:7;6072:11;:18;6084:5;6072:18;;;;;;;;;;;;;;;:27;6091:7;6072:27;;;;;;;;;;;;;;;;6065:34;;5927:183;;;;:::o;7716:298::-;1860:12;:10;:12::i;:::-;1850:22;;:6;;;;;;;;;;:22;;;1842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7817:1:::1;7801:12;:17;;7793:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;3138:12;7867:11;:26;;;;3138:12;7907:10;:25;;;;7955:12;7946:6;:21;;;;7991:12;7981:7;:22;;;;7716:298:::0;:::o;267:104::-;320:7;350:10;343:17;;267:104;:::o;6742:350::-;6855:1;6838:19;;:5;:19;;;6830:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6939:1;6920:21;;:7;:21;;;6912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7024:6;6994:11;:18;7006:5;6994:18;;;;;;;;;;;;;;;:27;7013:7;6994:27;;;;;;;;;;;;;;;:36;;;;7065:7;7049:32;;7058:5;7049:32;;;7074:6;7049:32;;;;;;:::i;:::-;;;;;;;;6742:350;;;:::o;8040:2701::-;8147:1;8131:18;;:4;:18;;;8123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8222:3;8213:6;:12;8205:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;8265:12;8295:24;:30;8320:4;8295:30;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;8329:24;:28;8354:2;8329:28;;;;;;;;;;;;;;;;;;;;;;;;;8295:62;8291:1733;;;8384:1;8377:8;;8291:1733;;;8463:1;8453:6;;;;;;;;;;;:11;;;;:36;;;;;8478:11;;8468:6;:21;;8453:36;8424:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;8612:1;8592:16;;;;;;;;;;;:21;;;8588:260;;8693:6;8675:8;:14;8684:4;8675:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;8737:6;8721:8;:12;8730:2;8721:12;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;8790:2;8775:26;;8784:4;8775:26;;;8794:6;8775:26;;;;;;:::i;:::-;;;;;;;;8823:7;;;8588:260;8882:13;8874:21;;:4;:21;;;8870:1140;;8926:6;;8919:13;;8870:1140;;;8967:13;8961:19;;:2;:19;;;8957:1053;;9004:20;9027:8;:23;9044:4;9027:23;;;;;;;;;;;;;;;;9004:46;;3243:9;9076:12;:22;:47;;;;;9122:1;9102:16;;;;;;;;;;;:21;;;9076:47;9072:829;;;9170:10;;9155:12;:25;9151:113;;;9227:10;;9212:25;;9151:113;9308:1;9289:16;;:20;;;;;;;;;;;;;;;;;;9335:21;9373:1;9359:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9335:40;;9419:4;9401;9406:1;9401:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9460:4;9450;9455:1;9450:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;9490:15;:95;;;9619:12;9665:1;9700:4;9738:15;9787;9490:342;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9877:1;9858:16;;:20;;;;;;;;;;;;;;;;;;9125:776;9072:829;9929:7;;9922:14;;8982:973;8957:1053;;;9990:1;9983:8;;8957:1053;8870:1140;8291:1733;10102:1;10094:4;:9;10090:641;;10154:17;10192:3;10184:4;10175:6;:13;;;;:::i;:::-;10174:21;;;;:::i;:::-;10154:41;;10213:22;10247:9;10238:6;:18;;;;:::i;:::-;10213:43;;10297:6;10279:8;:14;10288:4;10279:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;10337:14;10321:8;:12;10330:2;10321:12;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10396:9;10369:8;:23;10386:4;10369:23;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;10451:4;10428:40;;10437:4;10428:40;;;10458:9;10428:40;;;;;;:::i;:::-;;;;;;;;10506:2;10491:34;;10500:4;10491:34;;;10510:14;10491:34;;;;;;:::i;:::-;;;;;;;;10105:435;;10090:641;;;10616:6;10598:8;:14;10607:4;10598:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;10656:6;10640:8;:12;10649:2;10640:12;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;10705:2;10690:26;;10699:4;10690:26;;;10709:6;10690:26;;;;;;:::i;:::-;;;;;;;;10090:641;8109:2632;8040:2701;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:329::-;6079:6;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6020:329;;;;:::o;6355:180::-;6403:77;6400:1;6393:88;6500:4;6497:1;6490:15;6524:4;6521:1;6514:15;6541:194;6581:4;6601:20;6619:1;6601:20;:::i;:::-;6596:25;;6635:20;6653:1;6635:20;:::i;:::-;6630:25;;6679:1;6676;6672:9;6664:17;;6703:1;6697:4;6694:11;6691:37;;;6708:18;;:::i;:::-;6691:37;6541:194;;;;:::o;6741:182::-;6881:34;6877:1;6869:6;6865:14;6858:58;6741:182;:::o;6929:366::-;7071:3;7092:67;7156:2;7151:3;7092:67;:::i;:::-;7085:74;;7168:93;7257:3;7168:93;:::i;:::-;7286:2;7281:3;7277:12;7270:19;;6929:366;;;:::o;7301:419::-;7467:4;7505:2;7494:9;7490:18;7482:26;;7554:9;7548:4;7544:20;7540:1;7529:9;7525:17;7518:47;7582:131;7708:4;7582:131;:::i;:::-;7574:139;;7301:419;;;:::o;7726:85::-;7771:7;7800:5;7789:16;;7726:85;;;:::o;7817:60::-;7845:3;7866:5;7859:12;;7817:60;;;:::o;7883:158::-;7941:9;7974:61;7992:42;8001:32;8027:5;8001:32;:::i;:::-;7992:42;:::i;:::-;7974:61;:::i;:::-;7961:74;;7883:158;;;:::o;8047:147::-;8142:45;8181:5;8142:45;:::i;:::-;8137:3;8130:58;8047:147;;:::o;8200:807::-;8449:4;8487:3;8476:9;8472:19;8464:27;;8501:71;8569:1;8558:9;8554:17;8545:6;8501:71;:::i;:::-;8582:72;8650:2;8639:9;8635:18;8626:6;8582:72;:::i;:::-;8664:80;8740:2;8729:9;8725:18;8716:6;8664:80;:::i;:::-;8754;8830:2;8819:9;8815:18;8806:6;8754:80;:::i;:::-;8844:73;8912:3;8901:9;8897:19;8888:6;8844:73;:::i;:::-;8927;8995:3;8984:9;8980:19;8971:6;8927:73;:::i;:::-;8200:807;;;;;;;;;:::o;9013:143::-;9070:5;9101:6;9095:13;9086:22;;9117:33;9144:5;9117:33;:::i;:::-;9013:143;;;;:::o;9162:663::-;9250:6;9258;9266;9315:2;9303:9;9294:7;9290:23;9286:32;9283:119;;;9321:79;;:::i;:::-;9283:119;9441:1;9466:64;9522:7;9513:6;9502:9;9498:22;9466:64;:::i;:::-;9456:74;;9412:128;9579:2;9605:64;9661:7;9652:6;9641:9;9637:22;9605:64;:::i;:::-;9595:74;;9550:129;9718:2;9744:64;9800:7;9791:6;9780:9;9776:22;9744:64;:::i;:::-;9734:74;;9689:129;9162:663;;;;;:::o;9831:332::-;9952:4;9990:2;9979:9;9975:18;9967:26;;10003:71;10071:1;10060:9;10056:17;10047:6;10003:71;:::i;:::-;10084:72;10152:2;10141:9;10137:18;10128:6;10084:72;:::i;:::-;9831:332;;;;;:::o;10169:116::-;10239:21;10254:5;10239:21;:::i;:::-;10232:5;10229:32;10219:60;;10275:1;10272;10265:12;10219:60;10169:116;:::o;10291:137::-;10345:5;10376:6;10370:13;10361:22;;10392:30;10416:5;10392:30;:::i;:::-;10291:137;;;;:::o;10434:345::-;10501:6;10550:2;10538:9;10529:7;10525:23;10521:32;10518:119;;;10556:79;;:::i;:::-;10518:119;10676:1;10701:61;10754:7;10745:6;10734:9;10730:22;10701:61;:::i;:::-;10691:71;;10647:125;10434:345;;;;:::o;10785:180::-;10925:32;10921:1;10913:6;10909:14;10902:56;10785:180;:::o;10971:366::-;11113:3;11134:67;11198:2;11193:3;11134:67;:::i;:::-;11127:74;;11210:93;11299:3;11210:93;:::i;:::-;11328:2;11323:3;11319:12;11312:19;;10971:366;;;:::o;11343:419::-;11509:4;11547:2;11536:9;11532:18;11524:26;;11596:9;11590:4;11586:20;11582:1;11571:9;11567:17;11560:47;11624:131;11750:4;11624:131;:::i;:::-;11616:139;;11343:419;;;:::o;11768:223::-;11908:34;11904:1;11896:6;11892:14;11885:58;11977:6;11972:2;11964:6;11960:15;11953:31;11768:223;:::o;11997:366::-;12139:3;12160:67;12224:2;12219:3;12160:67;:::i;:::-;12153:74;;12236:93;12325:3;12236:93;:::i;:::-;12354:2;12349:3;12345:12;12338:19;;11997:366;;;:::o;12369:419::-;12535:4;12573:2;12562:9;12558:18;12550:26;;12622:9;12616:4;12612:20;12608:1;12597:9;12593:17;12586:47;12650:131;12776:4;12650:131;:::i;:::-;12642:139;;12369:419;;;:::o;12794:221::-;12934:34;12930:1;12922:6;12918:14;12911:58;13003:4;12998:2;12990:6;12986:15;12979:29;12794:221;:::o;13021:366::-;13163:3;13184:67;13248:2;13243:3;13184:67;:::i;:::-;13177:74;;13260:93;13349:3;13260:93;:::i;:::-;13378:2;13373:3;13369:12;13362:19;;13021:366;;;:::o;13393:419::-;13559:4;13597:2;13586:9;13582:18;13574:26;;13646:9;13640:4;13636:20;13632:1;13621:9;13617:17;13610:47;13674:131;13800:4;13674:131;:::i;:::-;13666:139;;13393:419;;;:::o;13818:224::-;13958:34;13954:1;13946:6;13942:14;13935:58;14027:7;14022:2;14014:6;14010:15;14003:32;13818:224;:::o;14048:366::-;14190:3;14211:67;14275:2;14270:3;14211:67;:::i;:::-;14204:74;;14287:93;14376:3;14287:93;:::i;:::-;14405:2;14400:3;14396:12;14389:19;;14048:366;;;:::o;14420:419::-;14586:4;14624:2;14613:9;14609:18;14601:26;;14673:9;14667:4;14663:20;14659:1;14648:9;14644:17;14637:47;14701:131;14827:4;14701:131;:::i;:::-;14693:139;;14420:419;;;:::o;14845:166::-;14985:18;14981:1;14973:6;14969:14;14962:42;14845:166;:::o;15017:366::-;15159:3;15180:67;15244:2;15239:3;15180:67;:::i;:::-;15173:74;;15256:93;15345:3;15256:93;:::i;:::-;15374:2;15369:3;15365:12;15358:19;;15017:366;;;:::o;15389:419::-;15555:4;15593:2;15582:9;15578:18;15570:26;;15642:9;15636:4;15632:20;15628:1;15617:9;15613:17;15606:47;15670:131;15796:4;15670:131;:::i;:::-;15662:139;;15389:419;;;:::o;15814:221::-;15954:34;15950:1;15942:6;15938:14;15931:58;16023:4;16018:2;16010:6;16006:15;15999:29;15814:221;:::o;16041:366::-;16183:3;16204:67;16268:2;16263:3;16204:67;:::i;:::-;16197:74;;16280:93;16369:3;16280:93;:::i;:::-;16398:2;16393:3;16389:12;16382:19;;16041:366;;;:::o;16413:419::-;16579:4;16617:2;16606:9;16602:18;16594:26;;16666:9;16660:4;16656:20;16652:1;16641:9;16637:17;16630:47;16694:131;16820:4;16694:131;:::i;:::-;16686:139;;16413:419;;;:::o;16838:191::-;16878:3;16897:20;16915:1;16897:20;:::i;:::-;16892:25;;16931:20;16949:1;16931:20;:::i;:::-;16926:25;;16974:1;16971;16967:9;16960:16;;16995:3;16992:1;16989:10;16986:36;;;17002:18;;:::i;:::-;16986:36;16838:191;;;;:::o;17035:180::-;17083:77;17080:1;17073:88;17180:4;17177:1;17170:15;17204:4;17201:1;17194:15;17221:180;17269:77;17266:1;17259:88;17366:4;17363:1;17356:15;17390:4;17387:1;17380:15;17407:114;17474:6;17508:5;17502:12;17492:22;;17407:114;;;:::o;17527:184::-;17626:11;17660:6;17655:3;17648:19;17700:4;17695:3;17691:14;17676:29;;17527:184;;;;:::o;17717:132::-;17784:4;17807:3;17799:11;;17837:4;17832:3;17828:14;17820:22;;17717:132;;;:::o;17855:108::-;17932:24;17950:5;17932:24;:::i;:::-;17927:3;17920:37;17855:108;;:::o;17969:179::-;18038:10;18059:46;18101:3;18093:6;18059:46;:::i;:::-;18137:4;18132:3;18128:14;18114:28;;17969:179;;;;:::o;18154:113::-;18224:4;18256;18251:3;18247:14;18239:22;;18154:113;;;:::o;18303:732::-;18422:3;18451:54;18499:5;18451:54;:::i;:::-;18521:86;18600:6;18595:3;18521:86;:::i;:::-;18514:93;;18631:56;18681:5;18631:56;:::i;:::-;18710:7;18741:1;18726:284;18751:6;18748:1;18745:13;18726:284;;;18827:6;18821:13;18854:63;18913:3;18898:13;18854:63;:::i;:::-;18847:70;;18940:60;18993:6;18940:60;:::i;:::-;18930:70;;18786:224;18773:1;18770;18766:9;18761:14;;18726:284;;;18730:14;19026:3;19019:10;;18427:608;;;18303:732;;;;:::o;19041:142::-;19091:9;19124:53;19142:34;19151:24;19169:5;19151:24;:::i;:::-;19142:34;:::i;:::-;19124:53;:::i;:::-;19111:66;;19041:142;;;:::o;19189:126::-;19239:9;19272:37;19303:5;19272:37;:::i;:::-;19259:50;;19189:126;;;:::o;19321:134::-;19379:9;19412:37;19443:5;19412:37;:::i;:::-;19399:50;;19321:134;;;:::o;19461:147::-;19556:45;19595:5;19556:45;:::i;:::-;19551:3;19544:58;19461:147;;:::o;19614:847::-;19885:4;19923:3;19912:9;19908:19;19900:27;;19937:71;20005:1;19994:9;19990:17;19981:6;19937:71;:::i;:::-;20018:80;20094:2;20083:9;20079:18;20070:6;20018:80;:::i;:::-;20145:9;20139:4;20135:20;20130:2;20119:9;20115:18;20108:48;20173:108;20276:4;20267:6;20173:108;:::i;:::-;20165:116;;20291:80;20367:2;20356:9;20352:18;20343:6;20291:80;:::i;:::-;20381:73;20449:3;20438:9;20434:19;20425:6;20381:73;:::i;:::-;19614:847;;;;;;;;:::o;20467:410::-;20507:7;20530:20;20548:1;20530:20;:::i;:::-;20525:25;;20564:20;20582:1;20564:20;:::i;:::-;20559:25;;20619:1;20616;20612:9;20641:30;20659:11;20641:30;:::i;:::-;20630:41;;20820:1;20811:7;20807:15;20804:1;20801:22;20781:1;20774:9;20754:83;20731:139;;20850:18;;:::i;:::-;20731:139;20515:362;20467:410;;;;:::o;20883:180::-;20931:77;20928:1;20921:88;21028:4;21025:1;21018:15;21052:4;21049:1;21042:15;21069:185;21109:1;21126:20;21144:1;21126:20;:::i;:::-;21121:25;;21160:20;21178:1;21160:20;:::i;:::-;21155:25;;21199:1;21189:35;;21204:18;;:::i;:::-;21189:35;21246:1;21243;21239:9;21234:14;;21069:185;;;;:::o

Swarm Source

ipfs://8ad0484acc44c91342abb20f82640536c8a0f4c7ffbe710632190eea02d53468
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.