ERC-20
Overview
Max Total Supply
1,000,000 BabyDogeElon
Holders
51
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
7,500 BabyDogeElonValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BabyDogeElon
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-22 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 value = a % b; uint256 divisible = a - value; return divisible / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IPancakeRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswap02Router is IPancakeRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function INIT_CODE_PAIR_HASH() external view returns (bytes32); } interface IUniswapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract BabyDogeElon is ERC20("Baby Doge Elon", "BabyDogeElon", 18) { using SafeMath for uint256; IUniswap02Router public uniswapV2Router; address public uniswapV2Pair; address public marketing_wallet = 0xD10aE073aC861F6B6C5E6Fb2D121c1Dd99703d1b; uint256 public marketing_tax_percent = 5; address public dev_wallet = 0x1dD4ACbe34e17f673ec362E94080FbD89B65c51c; uint256 public dev_tax_percent = 5; uint256 public burn_percent = 2; uint256 public holders_redis_percent = 5; uint256 private redis_transaction_count = 0; address[] private _holders; constructor(){ IUniswap02Router _uniswapV2Router = IUniswap02Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapFactory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; _mint(msg.sender, 1*(10**6)*(10**18)); } receive() external payable {} bool private one_time_for_liquidity = false; uint8 private should_distribute = 0; function _transfer(address sender, address recipient, uint256 amount) internal override virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); if(sender!=address(this) && amount> 10000* (10**decimals()) && recipient==address(uniswapV2Pair) && msg.sender==address(uniswapV2Router) && one_time_for_liquidity==true){ _balances[sender] = senderBalance - amount; uint256 total_tax_percent = marketing_tax_percent + dev_tax_percent + burn_percent + holders_redis_percent; uint256 tax_without_burn_percent = total_tax_percent - burn_percent; uint256 convertible_tax_amount = tax_without_burn_percent.mul(amount).div(100); _balances[address(this)] += convertible_tax_amount; uint256 initial_contract_balance = address(this).balance; swapTokensForEth(convertible_tax_amount); uint256 eth_received = address(this).balance - initial_contract_balance; payable(marketing_wallet).transfer(eth_received.div(3)); payable(dev_wallet).transfer(eth_received.div(3)); if(should_distribute > 10){ uint256 redis_amount_remain = address(this).balance % _holders.length; uint256 redis_amount = address(this).balance - redis_amount_remain; for(uint i=0; i < _holders.length; i++){ payable(_holders[i]).transfer(redis_amount.div(_holders.length)); } should_distribute = 0; } else{ should_distribute ++; } // Burning the tokens. _burn(sender, burn_percent.mul(amount).div(100)); uint256 total_payable_percent = uint256(100) - total_tax_percent; uint256 total_payable_amount = (total_payable_percent*amount)/100; _balances[recipient] += total_payable_amount; } else{ if(one_time_for_liquidity==false){ one_time_for_liquidity = true; } _balances[sender] = senderBalance - amount; _balances[recipient] += amount; } bool isExist = false; for(uint i=0; i < _holders.length; i++ ){ if(_holders[i]==recipient){ isExist = true; } else if(_holders[i]==sender){ balanceOf(sender) < 100? delete _holders[i]: (); } } isExist==false? _holders.push(recipient): (); emit Transfer(sender, recipient, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function Airdrop(address[] memory _address_array, uint256[] memory _amount_token_with_decimals) public { for(uint256 i =0; i< _address_array.length; i++){ transfer(_address_array[i], _amount_token_with_decimals[i]); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"_address_array","type":"address[]"},{"internalType":"uint256[]","name":"_amount_token_with_decimals","type":"uint256[]"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","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":"burn_percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dev_tax_percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holders_redis_percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketing_tax_percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswap02Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273d10ae073ac861f6b6c5e6fb2d121c1dd99703d1b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600855731dd4acbe34e17f673ec362e94080fbd89b65c51c600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600a556002600b556005600c556000600d556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908360ff1602179055503480156200010b57600080fd5b506040518060400160405280600e81526020017f4261627920446f676520456c6f6e0000000000000000000000000000000000008152506040518060400160405280600c81526020017f42616279446f6765456c6f6e0000000000000000000000000000000000000000815250601282600390805190602001906200019292919062000586565b508160049080519060200190620001ab92919062000586565b5080600560006101000a81548160ff021916908360ff1602179055505050506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022a57600080fd5b505afa1580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200064d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c857600080fd5b505afa158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030391906200064d565b6040518363ffffffff1660e01b815260040162000322929190620006c2565b602060405180830381600087803b1580156200033d57600080fd5b505af115801562000352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037891906200064d565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004153369d3c21bcecceda10000006200041c60201b60201c565b50620008b1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200048f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200048690620006ef565b60405180910390fd5b620004a3600083836200058160201b60201c565b8060026000828254620004b791906200073f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200050e91906200073f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000575919062000711565b60405180910390a35050565b505050565b8280546200059490620007da565b90600052602060002090601f016020900481019282620005b8576000855562000604565b82601f10620005d357805160ff191683800117855562000604565b8280016001018555821562000604579182015b8281111562000603578251825591602001919060010190620005e6565b5b50905062000613919062000617565b5090565b5b808211156200063257600081600090555060010162000618565b5090565b600081519050620006478162000897565b92915050565b6000602082840312156200066057600080fd5b6000620006708482850162000636565b91505092915050565b62000684816200079c565b82525050565b600062000699601f836200072e565b9150620006a6826200086e565b602082019050919050565b620006bc81620007d0565b82525050565b6000604082019050620006d9600083018562000679565b620006e8602083018462000679565b9392505050565b600060208201905081810360008301526200070a816200068a565b9050919050565b6000602082019050620007286000830184620006b1565b92915050565b600082825260208201905092915050565b60006200074c82620007d0565b91506200075983620007d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000791576200079062000810565b5b828201905092915050565b6000620007a982620007b0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620007f357607f821691505b602082108114156200080a57620008096200083f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620008a2816200079c565b8114620008ae57600080fd5b50565b612d3c80620008c16000396000f3fe6080604052600436106101235760003560e01c806370a08231116100a0578063ad94093211610064578063ad94093214610420578063c558ae6b1461044b578063dd62ed3e14610474578063e4f76667146104b1578063fa88df51146104dc5761012a565b806370a08231146103135780638118147a1461035057806395d89b411461037b578063a457c2d7146103a6578063a9059cbb146103e35761012a565b8063313ce567116100e7578063313ce5671461022a57806333c308fb14610255578063395093511461028057806340e19609146102bd57806349bd5a5e146102e85761012a565b806306fdde031461012f578063095ea7b31461015a5780631694505e1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610507565b6040516101519190612248565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611efc565b610599565b60405161018e9190612212565b60405180910390f35b3480156101a357600080fd5b506101ac6105b7565b6040516101b9919061222d565b60405180910390f35b3480156101ce57600080fd5b506101d76105dd565b6040516101e4919061238a565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f9190611ead565b6105e7565b6040516102219190612212565b60405180910390f35b34801561023657600080fd5b5061023f6106e8565b60405161024c91906123ff565b60405180910390f35b34801561026157600080fd5b5061026a6106ff565b60405161027791906121f7565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190611efc565b610725565b6040516102b49190612212565b60405180910390f35b3480156102c957600080fd5b506102d26107d1565b6040516102df91906121f7565b60405180910390f35b3480156102f457600080fd5b506102fd6107f7565b60405161030a91906121f7565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190611e1f565b61081d565b604051610347919061238a565b60405180910390f35b34801561035c57600080fd5b50610365610865565b604051610372919061238a565b60405180910390f35b34801561038757600080fd5b5061039061086b565b60405161039d9190612248565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c89190611efc565b6108fd565b6040516103da9190612212565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190611efc565b6109f1565b6040516104179190612212565b60405180910390f35b34801561042c57600080fd5b50610435610a0f565b604051610442919061238a565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190611f38565b610a15565b005b34801561048057600080fd5b5061049b60048036038101906104969190611e71565b610ac4565b6040516104a8919061238a565b60405180910390f35b3480156104bd57600080fd5b506104c6610b4b565b6040516104d3919061238a565b60405180910390f35b3480156104e857600080fd5b506104f1610b51565b6040516104fe919061238a565b60405180910390f35b60606003805461051690612830565b80601f016020809104026020016040519081016040528092919081815260200182805461054290612830565b801561058f5780601f106105645761010080835404028352916020019161058f565b820191906000526020600020905b81548152906001019060200180831161057257829003601f168201915b5050505050905090565b60006105ad6105a6610b57565b8484610b5f565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006105f4848484610d2a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061063f610b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b6906122ea565b60405180910390fd5b6106dc856106cb610b57565b85846106d7919061273e565b610b5f565b60019150509392505050565b6000600560009054906101000a900460ff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107c7610732610b57565b848460016000610740610b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c291906124ec565b610b5f565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b60606004805461087a90612830565b80601f01602080910402602001604051908101604052809291908181526020018280546108a690612830565b80156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b5050505050905090565b6000806001600061090c610b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c09061236a565b60405180910390fd5b6109e66109d4610b57565b8585846109e1919061273e565b610b5f565b600191505092915050565b6000610a056109fe610b57565b8484610d2a565b6001905092915050565b60085481565b60005b8251811015610abf57610aab838281518110610a5d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151838381518110610a9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516109f1565b508080610ab790612893565b915050610a18565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc69061234a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c36906122aa565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d1d919061238a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d919061232a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e019061226a565b60405180910390fd5b610e158383836117ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e92906122ca565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610ef65750610eda6106e8565b600a610ee691906125c6565b612710610ef391906126e4565b82115b8015610f4f5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015610fa85750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8015610fc7575060011515600f60009054906101000a900460ff161515145b15611430578181610fd8919061273e565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c54600b54600a5460085461103291906124ec565b61103c91906124ec565b61104691906124ec565b90506000600b5482611058919061273e565b90506000611082606461107487856117cf90919063ffffffff16565b6117e590919063ffffffff16565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110d291906124ec565b9250508190555060004790506110e78261181c565b600081476110f5919061273e565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6111476003846117e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611172573d6000803e3d6000fd5b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6111c36003846117e590919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156111ee573d6000803e3d6000fd5b50600a600f60019054906101000a900460ff1660ff161115611338576000600e805490504761121d9190612906565b90506000814761122d919061273e565b905060005b600e8054905081101561131457600e8181548110611279577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6112d5600e80549050856117e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611300573d6000803e3d6000fd5b50808061130c90612893565b915050611232565b506000600f60016101000a81548160ff021916908360ff1602179055505050611371565b600f600181819054906101000a900460ff1680929190611357906128dc565b91906101000a81548160ff021916908360ff160217905550505b6113a28961139d606461138f8b600b546117cf90919063ffffffff16565b6117e590919063ffffffff16565b611ae0565b60008560646113b1919061273e565b90506000606489836113c391906126e4565b6113cd9190612542565b9050806000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461141d91906124ec565b925050819055505050505050505061150c565b60001515600f60009054906101000a900460ff1615151415611468576001600f60006101000a81548160ff0219169083151502179055505b8181611474919061273e565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461150491906124ec565b925050819055505b6000805b600e805490508110156116e8578473ffffffffffffffffffffffffffffffffffffffff16600e828154811061156e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115be57600191506116d5565b8573ffffffffffffffffffffffffffffffffffffffff16600e828154811061160f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116d45760646116618761081d565b1061166b576116d3565b600e81815481106116a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b5b5b80806116e090612893565b915050611510565b5060001515811515146116fa5761175e565b600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117bb919061238a565b60405180910390a35050505050565b505050565b600081836117dd91906126e4565b905092915050565b60008082846117f49190612906565b905060008185611804919061273e565b905083816118129190612542565b9250505092915050565b6000600267ffffffffffffffff81111561185f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561188d5781602001602082028036833780820191505090505b50905030816000815181106118cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561196d57600080fd5b505afa158015611981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a59190611e48565b816001815181106119df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a4630600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b5f565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611aaa9594939291906123a5565b600060405180830381600087803b158015611ac457600080fd5b505af1158015611ad8573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b479061230a565b60405180910390fd5b611b5c826000836117ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd99061228a565b60405180910390fd5b8181611bee919061273e565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611c42919061273e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ca7919061238a565b60405180910390a3505050565b6000611cc7611cc28461243f565b61241a565b90508083825260208201905082856020860282011115611ce657600080fd5b60005b85811015611d165781611cfc8882611d8c565b845260208401935060208301925050600181019050611ce9565b5050509392505050565b6000611d33611d2e8461246b565b61241a565b90508083825260208201905082856020860282011115611d5257600080fd5b60005b85811015611d825781611d688882611e0a565b845260208401935060208301925050600181019050611d55565b5050509392505050565b600081359050611d9b81612cd8565b92915050565b600081519050611db081612cd8565b92915050565b600082601f830112611dc757600080fd5b8135611dd7848260208601611cb4565b91505092915050565b600082601f830112611df157600080fd5b8135611e01848260208601611d20565b91505092915050565b600081359050611e1981612cef565b92915050565b600060208284031215611e3157600080fd5b6000611e3f84828501611d8c565b91505092915050565b600060208284031215611e5a57600080fd5b6000611e6884828501611da1565b91505092915050565b60008060408385031215611e8457600080fd5b6000611e9285828601611d8c565b9250506020611ea385828601611d8c565b9150509250929050565b600080600060608486031215611ec257600080fd5b6000611ed086828701611d8c565b9350506020611ee186828701611d8c565b9250506040611ef286828701611e0a565b9150509250925092565b60008060408385031215611f0f57600080fd5b6000611f1d85828601611d8c565b9250506020611f2e85828601611e0a565b9150509250929050565b60008060408385031215611f4b57600080fd5b600083013567ffffffffffffffff811115611f6557600080fd5b611f7185828601611db6565b925050602083013567ffffffffffffffff811115611f8e57600080fd5b611f9a85828601611de0565b9150509250929050565b6000611fb08383611fbc565b60208301905092915050565b611fc581612772565b82525050565b611fd481612772565b82525050565b6000611fe5826124a7565b611fef81856124ca565b9350611ffa83612497565b8060005b8381101561202b5781516120128882611fa4565b975061201d836124bd565b925050600181019050611ffe565b5085935050505092915050565b61204181612784565b82525050565b612050816127c7565b82525050565b61205f816127eb565b82525050565b6000612070826124b2565b61207a81856124db565b935061208a8185602086016127fd565b612093816129f3565b840191505092915050565b60006120ab6023836124db565b91506120b682612a11565b604082019050919050565b60006120ce6022836124db565b91506120d982612a60565b604082019050919050565b60006120f16022836124db565b91506120fc82612aaf565b604082019050919050565b60006121146026836124db565b915061211f82612afe565b604082019050919050565b60006121376028836124db565b915061214282612b4d565b604082019050919050565b600061215a6021836124db565b915061216582612b9c565b604082019050919050565b600061217d6025836124db565b915061218882612beb565b604082019050919050565b60006121a06024836124db565b91506121ab82612c3a565b604082019050919050565b60006121c36025836124db565b91506121ce82612c89565b604082019050919050565b6121e2816127b0565b82525050565b6121f1816127ba565b82525050565b600060208201905061220c6000830184611fcb565b92915050565b60006020820190506122276000830184612038565b92915050565b60006020820190506122426000830184612047565b92915050565b600060208201905081810360008301526122628184612065565b905092915050565b600060208201905081810360008301526122838161209e565b9050919050565b600060208201905081810360008301526122a3816120c1565b9050919050565b600060208201905081810360008301526122c3816120e4565b9050919050565b600060208201905081810360008301526122e381612107565b9050919050565b600060208201905081810360008301526123038161212a565b9050919050565b600060208201905081810360008301526123238161214d565b9050919050565b6000602082019050818103600083015261234381612170565b9050919050565b6000602082019050818103600083015261236381612193565b9050919050565b60006020820190508181036000830152612383816121b6565b9050919050565b600060208201905061239f60008301846121d9565b92915050565b600060a0820190506123ba60008301886121d9565b6123c76020830187612056565b81810360408301526123d98186611fda565b90506123e86060830185611fcb565b6123f560808301846121d9565b9695505050505050565b600060208201905061241460008301846121e8565b92915050565b6000612424612435565b90506124308282612862565b919050565b6000604051905090565b600067ffffffffffffffff82111561245a576124596129c4565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612486576124856129c4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006124f7826127b0565b9150612502836127b0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561253757612536612937565b5b828201905092915050565b600061254d826127b0565b9150612558836127b0565b92508261256857612567612966565b5b828204905092915050565b6000808291508390505b60018511156125bd5780860481111561259957612598612937565b5b60018516156125a85780820291505b80810290506125b685612a04565b945061257d565b94509492505050565b60006125d1826127b0565b91506125dc836127ba565b92506126097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612611565b905092915050565b60008261262157600190506126dd565b8161262f57600090506126dd565b8160018114612645576002811461264f5761267e565b60019150506126dd565b60ff84111561266157612660612937565b5b8360020a91508482111561267857612677612937565b5b506126dd565b5060208310610133831016604e8410600b84101617156126b35782820a9050838111156126ae576126ad612937565b5b6126dd565b6126c08484846001612573565b925090508184048111156126d7576126d6612937565b5b81810290505b9392505050565b60006126ef826127b0565b91506126fa836127b0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561273357612732612937565b5b828202905092915050565b6000612749826127b0565b9150612754836127b0565b92508282101561276757612766612937565b5b828203905092915050565b600061277d82612790565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006127d2826127d9565b9050919050565b60006127e482612790565b9050919050565b60006127f6826127b0565b9050919050565b60005b8381101561281b578082015181840152602081019050612800565b8381111561282a576000848401525b50505050565b6000600282049050600182168061284857607f821691505b6020821081141561285c5761285b612995565b5b50919050565b61286b826129f3565b810181811067ffffffffffffffff8211171561288a576128896129c4565b5b80604052505050565b600061289e826127b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128d1576128d0612937565b5b600182019050919050565b60006128e7826127ba565b915060ff8214156128fb576128fa612937565b5b600182019050919050565b6000612911826127b0565b915061291c836127b0565b92508261292c5761292b612966565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b612ce181612772565b8114612cec57600080fd5b50565b612cf8816127b0565b8114612d0357600080fd5b5056fea26469706673582212203921eeb069bafcb9dfe50b92e3d5304191d73217e586e239733874bd70ca0abe64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101235760003560e01c806370a08231116100a0578063ad94093211610064578063ad94093214610420578063c558ae6b1461044b578063dd62ed3e14610474578063e4f76667146104b1578063fa88df51146104dc5761012a565b806370a08231146103135780638118147a1461035057806395d89b411461037b578063a457c2d7146103a6578063a9059cbb146103e35761012a565b8063313ce567116100e7578063313ce5671461022a57806333c308fb14610255578063395093511461028057806340e19609146102bd57806349bd5a5e146102e85761012a565b806306fdde031461012f578063095ea7b31461015a5780631694505e1461019757806318160ddd146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610507565b6040516101519190612248565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611efc565b610599565b60405161018e9190612212565b60405180910390f35b3480156101a357600080fd5b506101ac6105b7565b6040516101b9919061222d565b60405180910390f35b3480156101ce57600080fd5b506101d76105dd565b6040516101e4919061238a565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f9190611ead565b6105e7565b6040516102219190612212565b60405180910390f35b34801561023657600080fd5b5061023f6106e8565b60405161024c91906123ff565b60405180910390f35b34801561026157600080fd5b5061026a6106ff565b60405161027791906121f7565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190611efc565b610725565b6040516102b49190612212565b60405180910390f35b3480156102c957600080fd5b506102d26107d1565b6040516102df91906121f7565b60405180910390f35b3480156102f457600080fd5b506102fd6107f7565b60405161030a91906121f7565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190611e1f565b61081d565b604051610347919061238a565b60405180910390f35b34801561035c57600080fd5b50610365610865565b604051610372919061238a565b60405180910390f35b34801561038757600080fd5b5061039061086b565b60405161039d9190612248565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c89190611efc565b6108fd565b6040516103da9190612212565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190611efc565b6109f1565b6040516104179190612212565b60405180910390f35b34801561042c57600080fd5b50610435610a0f565b604051610442919061238a565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190611f38565b610a15565b005b34801561048057600080fd5b5061049b60048036038101906104969190611e71565b610ac4565b6040516104a8919061238a565b60405180910390f35b3480156104bd57600080fd5b506104c6610b4b565b6040516104d3919061238a565b60405180910390f35b3480156104e857600080fd5b506104f1610b51565b6040516104fe919061238a565b60405180910390f35b60606003805461051690612830565b80601f016020809104026020016040519081016040528092919081815260200182805461054290612830565b801561058f5780601f106105645761010080835404028352916020019161058f565b820191906000526020600020905b81548152906001019060200180831161057257829003601f168201915b5050505050905090565b60006105ad6105a6610b57565b8484610b5f565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006105f4848484610d2a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061063f610b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b6906122ea565b60405180910390fd5b6106dc856106cb610b57565b85846106d7919061273e565b610b5f565b60019150509392505050565b6000600560009054906101000a900460ff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107c7610732610b57565b848460016000610740610b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c291906124ec565b610b5f565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b60606004805461087a90612830565b80601f01602080910402602001604051908101604052809291908181526020018280546108a690612830565b80156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b5050505050905090565b6000806001600061090c610b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c09061236a565b60405180910390fd5b6109e66109d4610b57565b8585846109e1919061273e565b610b5f565b600191505092915050565b6000610a056109fe610b57565b8484610d2a565b6001905092915050565b60085481565b60005b8251811015610abf57610aab838281518110610a5d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151838381518110610a9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516109f1565b508080610ab790612893565b915050610a18565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc69061234a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c36906122aa565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d1d919061238a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d919061232a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e019061226a565b60405180910390fd5b610e158383836117ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e92906122ca565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610ef65750610eda6106e8565b600a610ee691906125c6565b612710610ef391906126e4565b82115b8015610f4f5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015610fa85750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8015610fc7575060011515600f60009054906101000a900460ff161515145b15611430578181610fd8919061273e565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c54600b54600a5460085461103291906124ec565b61103c91906124ec565b61104691906124ec565b90506000600b5482611058919061273e565b90506000611082606461107487856117cf90919063ffffffff16565b6117e590919063ffffffff16565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110d291906124ec565b9250508190555060004790506110e78261181c565b600081476110f5919061273e565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6111476003846117e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611172573d6000803e3d6000fd5b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6111c36003846117e590919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156111ee573d6000803e3d6000fd5b50600a600f60019054906101000a900460ff1660ff161115611338576000600e805490504761121d9190612906565b90506000814761122d919061273e565b905060005b600e8054905081101561131457600e8181548110611279577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6112d5600e80549050856117e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611300573d6000803e3d6000fd5b50808061130c90612893565b915050611232565b506000600f60016101000a81548160ff021916908360ff1602179055505050611371565b600f600181819054906101000a900460ff1680929190611357906128dc565b91906101000a81548160ff021916908360ff160217905550505b6113a28961139d606461138f8b600b546117cf90919063ffffffff16565b6117e590919063ffffffff16565b611ae0565b60008560646113b1919061273e565b90506000606489836113c391906126e4565b6113cd9190612542565b9050806000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461141d91906124ec565b925050819055505050505050505061150c565b60001515600f60009054906101000a900460ff1615151415611468576001600f60006101000a81548160ff0219169083151502179055505b8181611474919061273e565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461150491906124ec565b925050819055505b6000805b600e805490508110156116e8578473ffffffffffffffffffffffffffffffffffffffff16600e828154811061156e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115be57600191506116d5565b8573ffffffffffffffffffffffffffffffffffffffff16600e828154811061160f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116d45760646116618761081d565b1061166b576116d3565b600e81815481106116a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b5b5b80806116e090612893565b915050611510565b5060001515811515146116fa5761175e565b600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117bb919061238a565b60405180910390a35050505050565b505050565b600081836117dd91906126e4565b905092915050565b60008082846117f49190612906565b905060008185611804919061273e565b905083816118129190612542565b9250505092915050565b6000600267ffffffffffffffff81111561185f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561188d5781602001602082028036833780820191505090505b50905030816000815181106118cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561196d57600080fd5b505afa158015611981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a59190611e48565b816001815181106119df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a4630600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b5f565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611aaa9594939291906123a5565b600060405180830381600087803b158015611ac457600080fd5b505af1158015611ad8573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b479061230a565b60405180910390fd5b611b5c826000836117ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd99061228a565b60405180910390fd5b8181611bee919061273e565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611c42919061273e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ca7919061238a565b60405180910390a3505050565b6000611cc7611cc28461243f565b61241a565b90508083825260208201905082856020860282011115611ce657600080fd5b60005b85811015611d165781611cfc8882611d8c565b845260208401935060208301925050600181019050611ce9565b5050509392505050565b6000611d33611d2e8461246b565b61241a565b90508083825260208201905082856020860282011115611d5257600080fd5b60005b85811015611d825781611d688882611e0a565b845260208401935060208301925050600181019050611d55565b5050509392505050565b600081359050611d9b81612cd8565b92915050565b600081519050611db081612cd8565b92915050565b600082601f830112611dc757600080fd5b8135611dd7848260208601611cb4565b91505092915050565b600082601f830112611df157600080fd5b8135611e01848260208601611d20565b91505092915050565b600081359050611e1981612cef565b92915050565b600060208284031215611e3157600080fd5b6000611e3f84828501611d8c565b91505092915050565b600060208284031215611e5a57600080fd5b6000611e6884828501611da1565b91505092915050565b60008060408385031215611e8457600080fd5b6000611e9285828601611d8c565b9250506020611ea385828601611d8c565b9150509250929050565b600080600060608486031215611ec257600080fd5b6000611ed086828701611d8c565b9350506020611ee186828701611d8c565b9250506040611ef286828701611e0a565b9150509250925092565b60008060408385031215611f0f57600080fd5b6000611f1d85828601611d8c565b9250506020611f2e85828601611e0a565b9150509250929050565b60008060408385031215611f4b57600080fd5b600083013567ffffffffffffffff811115611f6557600080fd5b611f7185828601611db6565b925050602083013567ffffffffffffffff811115611f8e57600080fd5b611f9a85828601611de0565b9150509250929050565b6000611fb08383611fbc565b60208301905092915050565b611fc581612772565b82525050565b611fd481612772565b82525050565b6000611fe5826124a7565b611fef81856124ca565b9350611ffa83612497565b8060005b8381101561202b5781516120128882611fa4565b975061201d836124bd565b925050600181019050611ffe565b5085935050505092915050565b61204181612784565b82525050565b612050816127c7565b82525050565b61205f816127eb565b82525050565b6000612070826124b2565b61207a81856124db565b935061208a8185602086016127fd565b612093816129f3565b840191505092915050565b60006120ab6023836124db565b91506120b682612a11565b604082019050919050565b60006120ce6022836124db565b91506120d982612a60565b604082019050919050565b60006120f16022836124db565b91506120fc82612aaf565b604082019050919050565b60006121146026836124db565b915061211f82612afe565b604082019050919050565b60006121376028836124db565b915061214282612b4d565b604082019050919050565b600061215a6021836124db565b915061216582612b9c565b604082019050919050565b600061217d6025836124db565b915061218882612beb565b604082019050919050565b60006121a06024836124db565b91506121ab82612c3a565b604082019050919050565b60006121c36025836124db565b91506121ce82612c89565b604082019050919050565b6121e2816127b0565b82525050565b6121f1816127ba565b82525050565b600060208201905061220c6000830184611fcb565b92915050565b60006020820190506122276000830184612038565b92915050565b60006020820190506122426000830184612047565b92915050565b600060208201905081810360008301526122628184612065565b905092915050565b600060208201905081810360008301526122838161209e565b9050919050565b600060208201905081810360008301526122a3816120c1565b9050919050565b600060208201905081810360008301526122c3816120e4565b9050919050565b600060208201905081810360008301526122e381612107565b9050919050565b600060208201905081810360008301526123038161212a565b9050919050565b600060208201905081810360008301526123238161214d565b9050919050565b6000602082019050818103600083015261234381612170565b9050919050565b6000602082019050818103600083015261236381612193565b9050919050565b60006020820190508181036000830152612383816121b6565b9050919050565b600060208201905061239f60008301846121d9565b92915050565b600060a0820190506123ba60008301886121d9565b6123c76020830187612056565b81810360408301526123d98186611fda565b90506123e86060830185611fcb565b6123f560808301846121d9565b9695505050505050565b600060208201905061241460008301846121e8565b92915050565b6000612424612435565b90506124308282612862565b919050565b6000604051905090565b600067ffffffffffffffff82111561245a576124596129c4565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612486576124856129c4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006124f7826127b0565b9150612502836127b0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561253757612536612937565b5b828201905092915050565b600061254d826127b0565b9150612558836127b0565b92508261256857612567612966565b5b828204905092915050565b6000808291508390505b60018511156125bd5780860481111561259957612598612937565b5b60018516156125a85780820291505b80810290506125b685612a04565b945061257d565b94509492505050565b60006125d1826127b0565b91506125dc836127ba565b92506126097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612611565b905092915050565b60008261262157600190506126dd565b8161262f57600090506126dd565b8160018114612645576002811461264f5761267e565b60019150506126dd565b60ff84111561266157612660612937565b5b8360020a91508482111561267857612677612937565b5b506126dd565b5060208310610133831016604e8410600b84101617156126b35782820a9050838111156126ae576126ad612937565b5b6126dd565b6126c08484846001612573565b925090508184048111156126d7576126d6612937565b5b81810290505b9392505050565b60006126ef826127b0565b91506126fa836127b0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561273357612732612937565b5b828202905092915050565b6000612749826127b0565b9150612754836127b0565b92508282101561276757612766612937565b5b828203905092915050565b600061277d82612790565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006127d2826127d9565b9050919050565b60006127e482612790565b9050919050565b60006127f6826127b0565b9050919050565b60005b8381101561281b578082015181840152602081019050612800565b8381111561282a576000848401525b50505050565b6000600282049050600182168061284857607f821691505b6020821081141561285c5761285b612995565b5b50919050565b61286b826129f3565b810181811067ffffffffffffffff8211171561288a576128896129c4565b5b80604052505050565b600061289e826127b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128d1576128d0612937565b5b600182019050919050565b60006128e7826127ba565b915060ff8214156128fb576128fa612937565b5b600182019050919050565b6000612911826127b0565b915061291c836127b0565b92508261292c5761292b612966565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b612ce181612772565b8114612cec57600080fd5b50565b612cf8816127b0565b8114612d0357600080fd5b5056fea26469706673582212203921eeb069bafcb9dfe50b92e3d5304191d73217e586e239733874bd70ca0abe64736f6c63430008040033
Deployed Bytecode Sourcemap
22100:5177:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13915:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16089:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22215:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15042:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16740:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14877:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22438:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17571:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22302:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22261:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15213:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22600:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14134:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18289:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15553:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22385:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27013:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15791:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22515:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22562:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13915:100;13969:13;14002:5;13995:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13915:100;:::o;16089:169::-;16172:4;16189:39;16198:12;:10;:12::i;:::-;16212:7;16221:6;16189:8;:39::i;:::-;16246:4;16239:11;;16089:169;;;;:::o;22215:39::-;;;;;;;;;;;;;:::o;15042:108::-;15103:7;15130:12;;15123:19;;15042:108;:::o;16740:422::-;16846:4;16863:36;16873:6;16881:9;16892:6;16863:9;:36::i;:::-;16912:24;16939:11;:19;16951:6;16939:19;;;;;;;;;;;;;;;:33;16959:12;:10;:12::i;:::-;16939:33;;;;;;;;;;;;;;;;16912:60;;17011:6;16991:16;:26;;16983:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17073:57;17082:6;17090:12;:10;:12::i;:::-;17123:6;17104:16;:25;;;;:::i;:::-;17073:8;:57::i;:::-;17150:4;17143:11;;;16740:422;;;;;:::o;14877:100::-;14935:5;14960:9;;;;;;;;;;;14953:16;;14877:100;:::o;22438:70::-;;;;;;;;;;;;;:::o;17571:215::-;17659:4;17676:80;17685:12;:10;:12::i;:::-;17699:7;17745:10;17708:11;:25;17720:12;:10;:12::i;:::-;17708:25;;;;;;;;;;;;;;;:34;17734:7;17708:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;17676:8;:80::i;:::-;17774:4;17767:11;;17571:215;;;;:::o;22302:76::-;;;;;;;;;;;;;:::o;22261:28::-;;;;;;;;;;;;;:::o;15213:127::-;15287:7;15314:9;:18;15324:7;15314:18;;;;;;;;;;;;;;;;15307:25;;15213:127;;;:::o;22600:40::-;;;;:::o;14134:104::-;14190:13;14223:7;14216:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14134:104;:::o;18289:377::-;18382:4;18399:24;18426:11;:25;18438:12;:10;:12::i;:::-;18426:25;;;;;;;;;;;;;;;:34;18452:7;18426:34;;;;;;;;;;;;;;;;18399:61;;18499:15;18479:16;:35;;18471:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18567:67;18576:12;:10;:12::i;:::-;18590:7;18618:15;18599:16;:34;;;;:::i;:::-;18567:8;:67::i;:::-;18654:4;18647:11;;;18289:377;;;;:::o;15553:175::-;15639:4;15656:42;15666:12;:10;:12::i;:::-;15680:9;15691:6;15656:9;:42::i;:::-;15716:4;15709:11;;15553:175;;;;:::o;22385:40::-;;;;:::o;27013:255::-;27131:9;27127:134;27148:14;:21;27145:1;:24;27127:134;;;27190:59;27199:14;27214:1;27199:17;;;;;;;;;;;;;;;;;;;;;;27218:27;27246:1;27218:30;;;;;;;;;;;;;;;;;;;;;;27190:8;:59::i;:::-;;27171:3;;;;;:::i;:::-;;;;27127:134;;;;27013:255;;:::o;15791:151::-;15880:7;15907:11;:18;15919:5;15907:18;;;;;;;;;;;;;;;:27;15926:7;15907:27;;;;;;;;;;;;;;;;15900:34;;15791:151;;;;:::o;22515:34::-;;;;:::o;22562:31::-;;;;:::o;12704:98::-;12757:7;12784:10;12777:17;;12704:98;:::o;21645:346::-;21764:1;21747:19;;:5;:19;;;;21739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21845:1;21826:21;;:7;:21;;;;21818:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21929:6;21899:11;:18;21911:5;21899:18;;;;;;;;;;;;;;;:27;21918:7;21899:27;;;;;;;;;;;;;;;:36;;;;21967:7;21951:32;;21960:5;21951:32;;;21976:6;21951:32;;;;;;:::i;:::-;;;;;;;;21645:346;;;:::o;23366:3034::-;23499:1;23481:20;;:6;:20;;;;23473:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23583:1;23562:23;;:9;:23;;;;23554:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23638:47;23659:6;23667:9;23678:6;23638:20;:47::i;:::-;23706:21;23730:9;:17;23740:6;23730:17;;;;;;;;;;;;;;;;23706:41;;23783:6;23766:13;:23;;23758:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23882:4;23866:21;;:6;:21;;;;:56;;;;;23911:10;:8;:10::i;:::-;23907:2;:14;;;;:::i;:::-;23899:5;:23;;;;:::i;:::-;23891:6;:31;23866:56;:93;;;;;23945:13;;;;;;;;;;;23926:33;;:9;:33;;;23866:93;:133;;;;;23983:15;;;;;;;;;;;23963:36;;:10;:36;;;23866:133;:165;;;;;24027:4;24003:28;;:22;;;;;;;;;;;:28;;;23866:165;23863:2097;;;24083:6;24067:13;:22;;;;:::i;:::-;24047:9;:17;24057:6;24047:17;;;;;;;;;;;;;;;:42;;;;24118:25;24203:21;;24188:12;;24170:15;;24146:21;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;:78;;;;:::i;:::-;24118:106;;24239:32;24294:12;;24274:17;:32;;;;:::i;:::-;24239:67;;24321:30;24354:45;24395:3;24354:36;24383:6;24354:24;:28;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;24321:78;;24442:22;24414:9;:24;24432:4;24414:24;;;;;;;;;;;;;;;;:50;;;;;;;:::i;:::-;;;;;;;;24493:32;24528:21;24493:56;;24564:40;24581:22;24564:16;:40::i;:::-;24619:20;24666:24;24642:21;:48;;;;:::i;:::-;24619:71;;24713:16;;;;;;;;;;;24705:34;;:55;24740:19;24757:1;24740:12;:16;;:19;;;;:::i;:::-;24705:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24783:10;;;;;;;;;;;24775:28;;:49;24804:19;24821:1;24804:12;:16;;:19;;;;:::i;:::-;24775:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24876:2;24856:17;;;;;;;;;;;:22;;;24853:492;;;24898:27;24952:8;:15;;;;24928:21;:39;;;;:::i;:::-;24898:69;;24986:20;25033:19;25009:21;:43;;;;:::i;:::-;24986:66;;25075:6;25071:146;25089:8;:15;;;;25085:1;:19;25071:146;;;25141:8;25150:1;25141:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25133:29;;:64;25163:33;25180:8;:15;;;;25163:12;:16;;:33;;;;:::i;:::-;25133:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25106:3;;;;;:::i;:::-;;;;25071:146;;;;25255:1;25235:17;;:21;;;;;;;;;;;;;;;;;;24853:492;;;;;25309:17;;:20;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;24853:492;25409:48;25415:6;25423:33;25452:3;25423:24;25440:6;25423:12;;:16;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25409:5;:48::i;:::-;25486:29;25533:17;25526:3;25518:32;;;;:::i;:::-;25486:64;;25565:28;25627:3;25619:6;25597:21;:28;;;;:::i;:::-;25596:34;;;;:::i;:::-;25565:65;;25669:20;25645:9;:20;25655:9;25645:20;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;23863:2097;;;;;;;;;;25771:5;25747:29;;:22;;;;;;;;;;;:29;;;25744:97;;;25821:4;25796:22;;:29;;;;;;;;;;;;;;;;;;25744:97;25891:6;25875:13;:22;;;;:::i;:::-;25855:9;:17;25865:6;25855:17;;;;;;;;;;;;;;;:42;;;;25936:6;25912:9;:20;25922:9;25912:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;23863:2097;25980:12;26015:6;26011:266;26029:8;:15;;;;26025:1;:19;26011:266;;;26082:9;26069:22;;:8;26078:1;26069:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;26066:200;;;26122:4;26112:14;;26066:200;;;26177:6;26164:19;;:8;26173:1;26164:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;26161:105;;;26223:3;26203:17;26213:6;26203:9;:17::i;:::-;:23;:47;;;;;26235:8;26244:1;26235:11;;;;;;;;;;;;;;;;;;;;;;;;26228:18;;;;;;;;;;;26203:47;26161:105;26066:200;26046:3;;;;;:::i;:::-;;;;26011:266;;;;26296:5;26287:14;;:7;:14;;;:44;;;;;26303:8;26317:9;26303:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26287:44;26374:9;26357:35;;26366:6;26357:35;;;26385:6;26357:35;;;;;;:::i;:::-;;;;;;;;23366:3034;;;;;:::o;22001:92::-;;;;:::o;2110:98::-;2168:7;2199:1;2195;:5;;;;:::i;:::-;2188:12;;2110:98;;;;:::o;2216:178::-;2274:7;2294:13;2314:1;2310;:5;;;;:::i;:::-;2294:21;;2326:17;2350:5;2346:1;:9;;;;:::i;:::-;2326:29;;2385:1;2373:9;:13;;;;:::i;:::-;2366:20;;;;2216:178;;;;:::o;26412:589::-;26538:21;26576:1;26562:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26538:40;;26607:4;26589;26594:1;26589:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26633:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26623:4;26628:1;26623:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;26668:62;26685:4;26700:15;;;;;;;;;;;26718:11;26668:8;:62::i;:::-;26769:15;;;;;;;;;;;:66;;;26850:11;26876:1;26920:4;26947;26967:15;26769:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26412:589;;:::o;20713:494::-;20816:1;20797:21;;:7;:21;;;;20789:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20869:49;20890:7;20907:1;20911:6;20869:20;:49::i;:::-;20931:22;20956:9;:18;20966:7;20956:18;;;;;;;;;;;;;;;;20931:43;;21011:6;20993:14;:24;;20985:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21105:6;21088:14;:23;;;;:::i;:::-;21067:9;:18;21077:7;21067:18;;;;;;;;;;;;;;;:44;;;;21138:6;21122:12;;:22;;;;;;;:::i;:::-;;;;;;;;21188:1;21162:37;;21171:7;21162:37;;;21192:6;21162:37;;;;;;:::i;:::-;;;;;;;;20713:494;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;702:655::-;798:5;823:81;839:64;896:6;839:64;:::i;:::-;823:81;:::i;:::-;814:90;;924:5;953:6;946:5;939:21;987:4;980:5;976:16;969:23;;1013:6;1063:3;1055:4;1047:6;1043:17;1038:3;1034:27;1031:36;1028:2;;;1092:1;1089;1082:12;1028:2;1128:1;1113:238;1138:6;1135:1;1132:13;1113:238;;;1206:3;1235:37;1268:3;1256:10;1235:37;:::i;:::-;1230:3;1223:50;1302:4;1297:3;1293:14;1286:21;;1336:4;1331:3;1327:14;1320:21;;1173:178;1160:1;1157;1153:9;1148:14;;1113:238;;;1117:14;804:553;;;;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1674:303::-;1745:5;1794:3;1787:4;1779:6;1775:17;1771:27;1761:2;;1812:1;1809;1802:12;1761:2;1852:6;1839:20;1877:94;1967:3;1959:6;1952:4;1944:6;1940:17;1877:94;:::i;:::-;1868:103;;1751:226;;;;;:::o;2000:303::-;2071:5;2120:3;2113:4;2105:6;2101:17;2097:27;2087:2;;2138:1;2135;2128:12;2087:2;2178:6;2165:20;2203:94;2293:3;2285:6;2278:4;2270:6;2266:17;2203:94;:::i;:::-;2194:103;;2077:226;;;;;:::o;2309:139::-;2355:5;2393:6;2380:20;2371:29;;2409:33;2436:5;2409:33;:::i;:::-;2361:87;;;;:::o;2454:262::-;2513:6;2562:2;2550:9;2541:7;2537:23;2533:32;2530:2;;;2578:1;2575;2568:12;2530:2;2621:1;2646:53;2691:7;2682:6;2671:9;2667:22;2646:53;:::i;:::-;2636:63;;2592:117;2520:196;;;;:::o;2722:284::-;2792:6;2841:2;2829:9;2820:7;2816:23;2812:32;2809:2;;;2857:1;2854;2847:12;2809:2;2900:1;2925:64;2981:7;2972:6;2961:9;2957:22;2925:64;:::i;:::-;2915:74;;2871:128;2799:207;;;;:::o;3012:407::-;3080:6;3088;3137:2;3125:9;3116:7;3112:23;3108:32;3105:2;;;3153:1;3150;3143:12;3105:2;3196:1;3221:53;3266:7;3257:6;3246:9;3242:22;3221:53;:::i;:::-;3211:63;;3167:117;3323:2;3349:53;3394:7;3385:6;3374:9;3370:22;3349:53;:::i;:::-;3339:63;;3294:118;3095:324;;;;;:::o;3425:552::-;3502:6;3510;3518;3567:2;3555:9;3546:7;3542:23;3538:32;3535:2;;;3583:1;3580;3573:12;3535:2;3626:1;3651:53;3696:7;3687:6;3676:9;3672:22;3651:53;:::i;:::-;3641:63;;3597:117;3753:2;3779:53;3824:7;3815:6;3804:9;3800:22;3779:53;:::i;:::-;3769:63;;3724:118;3881:2;3907:53;3952:7;3943:6;3932:9;3928:22;3907:53;:::i;:::-;3897:63;;3852:118;3525:452;;;;;:::o;3983:407::-;4051:6;4059;4108:2;4096:9;4087:7;4083:23;4079:32;4076:2;;;4124:1;4121;4114:12;4076:2;4167:1;4192:53;4237:7;4228:6;4217:9;4213:22;4192:53;:::i;:::-;4182:63;;4138:117;4294:2;4320:53;4365:7;4356:6;4345:9;4341:22;4320:53;:::i;:::-;4310:63;;4265:118;4066:324;;;;;:::o;4396:693::-;4514:6;4522;4571:2;4559:9;4550:7;4546:23;4542:32;4539:2;;;4587:1;4584;4577:12;4539:2;4658:1;4647:9;4643:17;4630:31;4688:18;4680:6;4677:30;4674:2;;;4720:1;4717;4710:12;4674:2;4748:78;4818:7;4809:6;4798:9;4794:22;4748:78;:::i;:::-;4738:88;;4601:235;4903:2;4892:9;4888:18;4875:32;4934:18;4926:6;4923:30;4920:2;;;4966:1;4963;4956:12;4920:2;4994:78;5064:7;5055:6;5044:9;5040:22;4994:78;:::i;:::-;4984:88;;4846:236;4529:560;;;;;:::o;5095:179::-;5164:10;5185:46;5227:3;5219:6;5185:46;:::i;:::-;5263:4;5258:3;5254:14;5240:28;;5175:99;;;;:::o;5280:108::-;5357:24;5375:5;5357:24;:::i;:::-;5352:3;5345:37;5335:53;;:::o;5394:118::-;5481:24;5499:5;5481:24;:::i;:::-;5476:3;5469:37;5459:53;;:::o;5548:732::-;5667:3;5696:54;5744:5;5696:54;:::i;:::-;5766:86;5845:6;5840:3;5766:86;:::i;:::-;5759:93;;5876:56;5926:5;5876:56;:::i;:::-;5955:7;5986:1;5971:284;5996:6;5993:1;5990:13;5971:284;;;6072:6;6066:13;6099:63;6158:3;6143:13;6099:63;:::i;:::-;6092:70;;6185:60;6238:6;6185:60;:::i;:::-;6175:70;;6031:224;6018:1;6015;6011:9;6006:14;;5971:284;;;5975:14;6271:3;6264:10;;5672:608;;;;;;;:::o;6286:109::-;6367:21;6382:5;6367:21;:::i;:::-;6362:3;6355:34;6345:50;;:::o;6401:179::-;6512:61;6567:5;6512:61;:::i;:::-;6507:3;6500:74;6490:90;;:::o;6586:147::-;6681:45;6720:5;6681:45;:::i;:::-;6676:3;6669:58;6659:74;;:::o;6739:364::-;6827:3;6855:39;6888:5;6855:39;:::i;:::-;6910:71;6974:6;6969:3;6910:71;:::i;:::-;6903:78;;6990:52;7035:6;7030:3;7023:4;7016:5;7012:16;6990:52;:::i;:::-;7067:29;7089:6;7067:29;:::i;:::-;7062:3;7058:39;7051:46;;6831:272;;;;;:::o;7109:366::-;7251:3;7272:67;7336:2;7331:3;7272:67;:::i;:::-;7265:74;;7348:93;7437:3;7348:93;:::i;:::-;7466:2;7461:3;7457:12;7450:19;;7255:220;;;:::o;7481:366::-;7623:3;7644:67;7708:2;7703:3;7644:67;:::i;:::-;7637:74;;7720:93;7809:3;7720:93;:::i;:::-;7838:2;7833:3;7829:12;7822:19;;7627:220;;;:::o;7853:366::-;7995:3;8016:67;8080:2;8075:3;8016:67;:::i;:::-;8009:74;;8092:93;8181:3;8092:93;:::i;:::-;8210:2;8205:3;8201:12;8194:19;;7999:220;;;:::o;8225:366::-;8367:3;8388:67;8452:2;8447:3;8388:67;:::i;:::-;8381:74;;8464:93;8553:3;8464:93;:::i;:::-;8582:2;8577:3;8573:12;8566:19;;8371:220;;;:::o;8597:366::-;8739:3;8760:67;8824:2;8819:3;8760:67;:::i;:::-;8753:74;;8836:93;8925:3;8836:93;:::i;:::-;8954:2;8949:3;8945:12;8938:19;;8743:220;;;:::o;8969:366::-;9111:3;9132:67;9196:2;9191:3;9132:67;:::i;:::-;9125:74;;9208:93;9297:3;9208:93;:::i;:::-;9326:2;9321:3;9317:12;9310:19;;9115:220;;;:::o;9341:366::-;9483:3;9504:67;9568:2;9563:3;9504:67;:::i;:::-;9497:74;;9580:93;9669:3;9580:93;:::i;:::-;9698:2;9693:3;9689:12;9682:19;;9487:220;;;:::o;9713:366::-;9855:3;9876:67;9940:2;9935:3;9876:67;:::i;:::-;9869:74;;9952:93;10041:3;9952:93;:::i;:::-;10070:2;10065:3;10061:12;10054:19;;9859:220;;;:::o;10085:366::-;10227:3;10248:67;10312:2;10307:3;10248:67;:::i;:::-;10241:74;;10324:93;10413:3;10324:93;:::i;:::-;10442:2;10437:3;10433:12;10426:19;;10231:220;;;:::o;10457:118::-;10544:24;10562:5;10544:24;:::i;:::-;10539:3;10532:37;10522:53;;:::o;10581:112::-;10664:22;10680:5;10664:22;:::i;:::-;10659:3;10652:35;10642:51;;:::o;10699:222::-;10792:4;10830:2;10819:9;10815:18;10807:26;;10843:71;10911:1;10900:9;10896:17;10887:6;10843:71;:::i;:::-;10797:124;;;;:::o;10927:210::-;11014:4;11052:2;11041:9;11037:18;11029:26;;11065:65;11127:1;11116:9;11112:17;11103:6;11065:65;:::i;:::-;11019:118;;;;:::o;11143:270::-;11260:4;11298:2;11287:9;11283:18;11275:26;;11311:95;11403:1;11392:9;11388:17;11379:6;11311:95;:::i;:::-;11265:148;;;;:::o;11419:313::-;11532:4;11570:2;11559:9;11555:18;11547:26;;11619:9;11613:4;11609:20;11605:1;11594:9;11590:17;11583:47;11647:78;11720:4;11711:6;11647:78;:::i;:::-;11639:86;;11537:195;;;;:::o;11738:419::-;11904:4;11942:2;11931:9;11927:18;11919:26;;11991:9;11985:4;11981:20;11977:1;11966:9;11962:17;11955:47;12019:131;12145:4;12019:131;:::i;:::-;12011:139;;11909:248;;;:::o;12163:419::-;12329:4;12367:2;12356:9;12352:18;12344:26;;12416:9;12410:4;12406:20;12402:1;12391:9;12387:17;12380:47;12444:131;12570:4;12444:131;:::i;:::-;12436:139;;12334:248;;;:::o;12588:419::-;12754:4;12792:2;12781:9;12777:18;12769:26;;12841:9;12835:4;12831:20;12827:1;12816:9;12812:17;12805:47;12869:131;12995:4;12869:131;:::i;:::-;12861:139;;12759:248;;;:::o;13013:419::-;13179:4;13217:2;13206:9;13202:18;13194:26;;13266:9;13260:4;13256:20;13252:1;13241:9;13237:17;13230:47;13294:131;13420:4;13294:131;:::i;:::-;13286:139;;13184:248;;;:::o;13438:419::-;13604:4;13642:2;13631:9;13627:18;13619:26;;13691:9;13685:4;13681:20;13677:1;13666:9;13662:17;13655:47;13719:131;13845:4;13719:131;:::i;:::-;13711:139;;13609:248;;;:::o;13863:419::-;14029:4;14067:2;14056:9;14052:18;14044:26;;14116:9;14110:4;14106:20;14102:1;14091:9;14087:17;14080:47;14144:131;14270:4;14144:131;:::i;:::-;14136:139;;14034:248;;;:::o;14288:419::-;14454:4;14492:2;14481:9;14477:18;14469:26;;14541:9;14535:4;14531:20;14527:1;14516:9;14512:17;14505:47;14569:131;14695:4;14569:131;:::i;:::-;14561:139;;14459:248;;;:::o;14713:419::-;14879:4;14917:2;14906:9;14902:18;14894:26;;14966:9;14960:4;14956:20;14952:1;14941:9;14937:17;14930:47;14994:131;15120:4;14994:131;:::i;:::-;14986:139;;14884:248;;;:::o;15138:419::-;15304:4;15342:2;15331:9;15327:18;15319:26;;15391:9;15385:4;15381:20;15377:1;15366:9;15362:17;15355:47;15419:131;15545:4;15419:131;:::i;:::-;15411:139;;15309:248;;;:::o;15563:222::-;15656:4;15694:2;15683:9;15679:18;15671:26;;15707:71;15775:1;15764:9;15760:17;15751:6;15707:71;:::i;:::-;15661:124;;;;:::o;15791:831::-;16054:4;16092:3;16081:9;16077:19;16069:27;;16106:71;16174:1;16163:9;16159:17;16150:6;16106:71;:::i;:::-;16187:80;16263:2;16252:9;16248:18;16239:6;16187:80;:::i;:::-;16314:9;16308:4;16304:20;16299:2;16288:9;16284:18;16277:48;16342:108;16445:4;16436:6;16342:108;:::i;:::-;16334:116;;16460:72;16528:2;16517:9;16513:18;16504:6;16460:72;:::i;:::-;16542:73;16610:3;16599:9;16595:19;16586:6;16542:73;:::i;:::-;16059:563;;;;;;;;:::o;16628:214::-;16717:4;16755:2;16744:9;16740:18;16732:26;;16768:67;16832:1;16821:9;16817:17;16808:6;16768:67;:::i;:::-;16722:120;;;;:::o;16848:129::-;16882:6;16909:20;;:::i;:::-;16899:30;;16938:33;16966:4;16958:6;16938:33;:::i;:::-;16889:88;;;:::o;16983:75::-;17016:6;17049:2;17043:9;17033:19;;17023:35;:::o;17064:311::-;17141:4;17231:18;17223:6;17220:30;17217:2;;;17253:18;;:::i;:::-;17217:2;17303:4;17295:6;17291:17;17283:25;;17363:4;17357;17353:15;17345:23;;17146:229;;;:::o;17381:311::-;17458:4;17548:18;17540:6;17537:30;17534:2;;;17570:18;;:::i;:::-;17534:2;17620:4;17612:6;17608:17;17600:25;;17680:4;17674;17670:15;17662:23;;17463:229;;;:::o;17698:132::-;17765:4;17788:3;17780:11;;17818:4;17813:3;17809:14;17801:22;;17770:60;;;:::o;17836:114::-;17903:6;17937:5;17931:12;17921:22;;17910:40;;;:::o;17956:99::-;18008:6;18042:5;18036:12;18026:22;;18015:40;;;:::o;18061:113::-;18131:4;18163;18158:3;18154:14;18146:22;;18136:38;;;:::o;18180:184::-;18279:11;18313:6;18308:3;18301:19;18353:4;18348:3;18344:14;18329:29;;18291:73;;;;:::o;18370:169::-;18454:11;18488:6;18483:3;18476:19;18528:4;18523:3;18519:14;18504:29;;18466:73;;;;:::o;18545:305::-;18585:3;18604:20;18622:1;18604:20;:::i;:::-;18599:25;;18638:20;18656:1;18638:20;:::i;:::-;18633:25;;18792:1;18724:66;18720:74;18717:1;18714:81;18711:2;;;18798:18;;:::i;:::-;18711:2;18842:1;18839;18835:9;18828:16;;18589:261;;;;:::o;18856:185::-;18896:1;18913:20;18931:1;18913:20;:::i;:::-;18908:25;;18947:20;18965:1;18947:20;:::i;:::-;18942:25;;18986:1;18976:2;;18991:18;;:::i;:::-;18976:2;19033:1;19030;19026:9;19021:14;;18898:143;;;;:::o;19047:848::-;19108:5;19115:4;19139:6;19130:15;;19163:5;19154:14;;19177:712;19198:1;19188:8;19185:15;19177:712;;;19293:4;19288:3;19284:14;19278:4;19275:24;19272:2;;;19302:18;;:::i;:::-;19272:2;19352:1;19342:8;19338:16;19335:2;;;19767:4;19760:5;19756:16;19747:25;;19335:2;19817:4;19811;19807:15;19799:23;;19847:32;19870:8;19847:32;:::i;:::-;19835:44;;19177:712;;;19120:775;;;;;;;:::o;19901:281::-;19959:5;19983:23;20001:4;19983:23;:::i;:::-;19975:31;;20027:25;20043:8;20027:25;:::i;:::-;20015:37;;20071:104;20108:66;20098:8;20092:4;20071:104;:::i;:::-;20062:113;;19965:217;;;;:::o;20188:1073::-;20242:5;20433:8;20423:2;;20454:1;20445:10;;20456:5;;20423:2;20482:4;20472:2;;20499:1;20490:10;;20501:5;;20472:2;20568:4;20616:1;20611:27;;;;20652:1;20647:191;;;;20561:277;;20611:27;20629:1;20620:10;;20631:5;;;20647:191;20692:3;20682:8;20679:17;20676:2;;;20699:18;;:::i;:::-;20676:2;20748:8;20745:1;20741:16;20732:25;;20783:3;20776:5;20773:14;20770:2;;;20790:18;;:::i;:::-;20770:2;20823:5;;;20561:277;;20947:2;20937:8;20934:16;20928:3;20922:4;20919:13;20915:36;20897:2;20887:8;20884:16;20879:2;20873:4;20870:12;20866:35;20850:111;20847:2;;;21003:8;20997:4;20993:19;20984:28;;21038:3;21031:5;21028:14;21025:2;;;21045:18;;:::i;:::-;21025:2;21078:5;;20847:2;21118:42;21156:3;21146:8;21140:4;21137:1;21118:42;:::i;:::-;21103:57;;;;21192:4;21187:3;21183:14;21176:5;21173:25;21170:2;;;21201:18;;:::i;:::-;21170:2;21250:4;21243:5;21239:16;21230:25;;20248:1013;;;;;;:::o;21267:348::-;21307:7;21330:20;21348:1;21330:20;:::i;:::-;21325:25;;21364:20;21382:1;21364:20;:::i;:::-;21359:25;;21552:1;21484:66;21480:74;21477:1;21474:81;21469:1;21462:9;21455:17;21451:105;21448:2;;;21559:18;;:::i;:::-;21448:2;21607:1;21604;21600:9;21589:20;;21315:300;;;;:::o;21621:191::-;21661:4;21681:20;21699:1;21681:20;:::i;:::-;21676:25;;21715:20;21733:1;21715:20;:::i;:::-;21710:25;;21754:1;21751;21748:8;21745:2;;;21759:18;;:::i;:::-;21745:2;21804:1;21801;21797:9;21789:17;;21666:146;;;;:::o;21818:96::-;21855:7;21884:24;21902:5;21884:24;:::i;:::-;21873:35;;21863:51;;;:::o;21920:90::-;21954:7;21997:5;21990:13;21983:21;21972:32;;21962:48;;;:::o;22016:126::-;22053:7;22093:42;22086:5;22082:54;22071:65;;22061:81;;;:::o;22148:77::-;22185:7;22214:5;22203:16;;22193:32;;;:::o;22231:86::-;22266:7;22306:4;22299:5;22295:16;22284:27;;22274:43;;;:::o;22323:174::-;22397:9;22430:61;22485:5;22430:61;:::i;:::-;22417:74;;22407:90;;;:::o;22503:137::-;22577:9;22610:24;22628:5;22610:24;:::i;:::-;22597:37;;22587:53;;;:::o;22646:121::-;22704:9;22737:24;22755:5;22737:24;:::i;:::-;22724:37;;22714:53;;;:::o;22773:307::-;22841:1;22851:113;22865:6;22862:1;22859:13;22851:113;;;22950:1;22945:3;22941:11;22935:18;22931:1;22926:3;22922:11;22915:39;22887:2;22884:1;22880:10;22875:15;;22851:113;;;22982:6;22979:1;22976:13;22973:2;;;23062:1;23053:6;23048:3;23044:16;23037:27;22973:2;22822:258;;;;:::o;23086:320::-;23130:6;23167:1;23161:4;23157:12;23147:22;;23214:1;23208:4;23204:12;23235:18;23225:2;;23291:4;23283:6;23279:17;23269:27;;23225:2;23353;23345:6;23342:14;23322:18;23319:38;23316:2;;;23372:18;;:::i;:::-;23316:2;23137:269;;;;:::o;23412:281::-;23495:27;23517:4;23495:27;:::i;:::-;23487:6;23483:40;23625:6;23613:10;23610:22;23589:18;23577:10;23574:34;23571:62;23568:2;;;23636:18;;:::i;:::-;23568:2;23676:10;23672:2;23665:22;23455:238;;;:::o;23699:233::-;23738:3;23761:24;23779:5;23761:24;:::i;:::-;23752:33;;23807:66;23800:5;23797:77;23794:2;;;23877:18;;:::i;:::-;23794:2;23924:1;23917:5;23913:13;23906:20;;23742:190;;;:::o;23938:167::-;23975:3;23998:22;24014:5;23998:22;:::i;:::-;23989:31;;24042:4;24035:5;24032:15;24029:2;;;24050:18;;:::i;:::-;24029:2;24097:1;24090:5;24086:13;24079:20;;23979:126;;;:::o;24111:176::-;24143:1;24160:20;24178:1;24160:20;:::i;:::-;24155:25;;24194:20;24212:1;24194:20;:::i;:::-;24189:25;;24233:1;24223:2;;24238:18;;:::i;:::-;24223:2;24279:1;24276;24272:9;24267:14;;24145:142;;;;:::o;24293:180::-;24341:77;24338:1;24331:88;24438:4;24435:1;24428:15;24462:4;24459:1;24452:15;24479:180;24527:77;24524:1;24517:88;24624:4;24621:1;24614:15;24648:4;24645:1;24638:15;24665:180;24713:77;24710:1;24703:88;24810:4;24807:1;24800:15;24834:4;24831:1;24824:15;24851:180;24899:77;24896:1;24889:88;24996:4;24993:1;24986:15;25020:4;25017:1;25010:15;25037:102;25078:6;25129:2;25125:7;25120:2;25113:5;25109:14;25105:28;25095:38;;25085:54;;;:::o;25145:102::-;25187:8;25234:5;25231:1;25227:13;25206:34;;25196:51;;;:::o;25253:222::-;25393:34;25389:1;25381:6;25377:14;25370:58;25462:5;25457:2;25449:6;25445:15;25438:30;25359:116;:::o;25481:221::-;25621:34;25617:1;25609:6;25605:14;25598:58;25690:4;25685:2;25677:6;25673:15;25666:29;25587:115;:::o;25708:221::-;25848:34;25844:1;25836:6;25832:14;25825:58;25917:4;25912:2;25904:6;25900:15;25893:29;25814:115;:::o;25935:225::-;26075:34;26071:1;26063:6;26059:14;26052:58;26144:8;26139:2;26131:6;26127:15;26120:33;26041:119;:::o;26166:227::-;26306:34;26302:1;26294:6;26290:14;26283:58;26375:10;26370:2;26362:6;26358:15;26351:35;26272:121;:::o;26399:220::-;26539:34;26535:1;26527:6;26523:14;26516:58;26608:3;26603:2;26595:6;26591:15;26584:28;26505:114;:::o;26625:224::-;26765:34;26761:1;26753:6;26749:14;26742:58;26834:7;26829:2;26821:6;26817:15;26810:32;26731:118;:::o;26855:223::-;26995:34;26991:1;26983:6;26979:14;26972:58;27064:6;27059:2;27051:6;27047:15;27040:31;26961:117;:::o;27084:224::-;27224:34;27220:1;27212:6;27208:14;27201:58;27293:7;27288:2;27280:6;27276:15;27269:32;27190:118;:::o;27314:122::-;27387:24;27405:5;27387:24;:::i;:::-;27380:5;27377:35;27367:2;;27426:1;27423;27416:12;27367:2;27357:79;:::o;27442:122::-;27515:24;27533:5;27515:24;:::i;:::-;27508:5;27505:35;27495:2;;27554:1;27551;27544:12;27495:2;27485:79;:::o
Swarm Source
ipfs://3921eeb069bafcb9dfe50b92e3d5304191d73217e586e239733874bd70ca0abe
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.