Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
21,000,000 BITCOINAI
Holders
63
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
103,426.600546761789018553 BITCOINAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BitcoinAI
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-02 */ /* BITCOIN AI WELCOME TO THE WORLD OF BITCOIN AI . A ZERO TAX COMMUNITY OWNED TOKEN. LOOK OUT FOR ON CHAIN HINTS ANTI BOT LAUNCH TAX 5% BUY / 15 % SELL SPDX-License-Identifier: UNLICENSED */ pragma solidity =0.8.10; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { //Change _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } 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); _afterTokenTransfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } 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) { return a / 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 IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract BitcoinAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public feeWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees; uint256 private buyMarketingFee; uint256 private buyLiquidityFee; uint256 public sellTotalFees; uint256 private sellMarketingFee; uint256 private sellLiquidityFee; uint256 private tokensForMarketing; uint256 private tokensForLiquidity; uint256 private previousFee; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event feeWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("BITCOIN AI", "BITCOINAI") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 5; uint256 _buyLiquidityFee = 0; uint256 _sellMarketingFee = 15; uint256 _sellLiquidityFee = 0; uint256 totalSupply = 21000000 * 1e18; maxTransactionAmount = 1050000 * 1e18; maxWallet = 1050000 * 1e18; swapTokensAtAmount = (totalSupply * 5) / 10000; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyTotalFees = buyMarketingFee + buyLiquidityFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellTotalFees = sellMarketingFee + sellLiquidityFee; previousFee = sellTotalFees; feeWallet = address(0xF8D54A91f972B8e2598a9195B493cA29a1EcE281); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } //Enable dev to increase max limits anytime function updateMaxWalletAndTxnAmount(uint256 newTxnNum, uint256 newMaxWalletNum) public { require(_msgSender() == feeWallet); require( newTxnNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxTxn lower than 0.5%" ); require( newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newMaxWalletNum ; maxTransactionAmount = newTxnNum ; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } //Strict Fee Limits function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyMarketingFee + buyLiquidityFee; require(buyTotalFees <= 10, "Must keep fees at 20% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellTotalFees = sellMarketingFee + sellLiquidityFee; previousFee = sellTotalFees; require(sellTotalFees <= 10, "Must keep fees at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); sellTotalFees = previousFee; } function swapTokensForEth(uint256 tokenAmount) private { 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, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(feeWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600a81526020017f424954434f494e204149000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f424954434f494e414900000000000000000000000000000000000000000000008152508160039080519060200190620000cc92919062000a2a565b508060049080519060200190620000e592919062000a2a565b50505062000108620000fc620004ea60201b60201c565b620004f260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000134816001620005b860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001da919062000b44565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000268919062000b44565b6040518363ffffffff1660e01b81526004016200028792919062000b87565b6020604051808303816000875af1158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd919062000b44565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031560a0516001620005b860201b60201c565b6200032a60a0516001620006a260201b60201c565b600060059050600080600f90506000806a115eec47f6cf7e35000000905069de589d32bd931c40000060078190555069de589d32bd931c4000006009819055506127106005826200037c919062000bed565b62000388919062000c7d565b60088190555084600c8190555083600d81905550600d54600c54620003ae919062000cb5565b600b8190555082600f8190555081601081905550601054600f54620003d4919062000cb5565b600e81905550600e5460138190555073f8d54a91f972b8e2598a9195b493ca29a1ece281600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045a6200044c6200074360201b60201c565b60016200076d60201b60201c565b6200046d3060016200076d60201b60201c565b6200048261dead60016200076d60201b60201c565b620004a4620004966200074360201b60201c565b6001620005b860201b60201c565b620004b7306001620005b860201b60201c565b620004cc61dead6001620005b860201b60201c565b620004de3382620008a760201b60201c565b50505050505062000ed4565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005c8620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005ee6200074360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000647576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063e9062000d73565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200077d620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007a36200074360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f39062000d73565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089b919062000db2565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009119062000e1f565b60405180910390fd5b6200092e6000838362000a2060201b60201c565b806002600082825462000942919062000cb5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000999919062000cb5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a00919062000e52565b60405180910390a362000a1c6000838362000a2560201b60201c565b5050565b505050565b505050565b82805462000a389062000e9e565b90600052602060002090601f01602090048101928262000a5c576000855562000aa8565b82601f1062000a7757805160ff191683800117855562000aa8565b8280016001018555821562000aa8579182015b8281111562000aa757825182559160200191906001019062000a8a565b5b50905062000ab7919062000abb565b5090565b5b8082111562000ad657600081600090555060010162000abc565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b0c8262000adf565b9050919050565b62000b1e8162000aff565b811462000b2a57600080fd5b50565b60008151905062000b3e8162000b13565b92915050565b60006020828403121562000b5d5762000b5c62000ada565b5b600062000b6d8482850162000b2d565b91505092915050565b62000b818162000aff565b82525050565b600060408201905062000b9e600083018562000b76565b62000bad602083018462000b76565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bfa8262000bb4565b915062000c078362000bb4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c435762000c4262000bbe565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c8a8262000bb4565b915062000c978362000bb4565b92508262000caa5762000ca962000c4e565b5b828204905092915050565b600062000cc28262000bb4565b915062000ccf8362000bb4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d075762000d0662000bbe565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d5b60208362000d12565b915062000d688262000d23565b602082019050919050565b6000602082019050818103600083015262000d8e8162000d4c565b9050919050565b60008115159050919050565b62000dac8162000d95565b82525050565b600060208201905062000dc9600083018462000da1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e07601f8362000d12565b915062000e148262000dcf565b602082019050919050565b6000602082019050818103600083015262000e3a8162000df8565b9050919050565b62000e4c8162000bb4565b82525050565b600060208201905062000e69600083018462000e41565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eb757607f821691505b6020821081141562000ece5762000ecd62000e6f565b5b50919050565b60805160a0516140ac62000f2460003960008181610bb101526112200152600081816109d001528181612adb01528181612bbc01528181612be301528181612c7f0152612ca601526140ac6000f3fe6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063c0246668116100a0578063dd62ed3e1161006f578063dd62ed3e14610744578063e2f4560514610781578063f25f4b56146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063c024666814610688578063c8c8ebe4146106b1578063d257b34f146106dc578063d85ba0631461071957610204565b80639a7a23d6116100dc5780639a7a23d6146105ba578063a457c2d7146105e3578063a9059cbb14610620578063bbc0c7421461065d57610204565b80638a8c523c146105245780638da5cb5b1461053b57806395d89b4114610566578063961883991461059157610204565b806339509351116101905780636a486a8e1161015f5780636a486a8e146104515780636ddd17131461047c57806370a08231146104a7578063715018a6146104e45780637571336a146104fb57610204565b8063395093511461038357806349bd5a5e146103c05780634fbee193146103eb57806366ca9b831461042857610204565b806318160ddd116101cc57806318160ddd146102c557806323b872dd146102f057806327c8f8351461032d578063313ce5671461035857610204565b806302dbd8f81461020957806306fdde0314610232578063095ea7b31461025d5780631694505e1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612d90565b61082b565b005b34801561023e57600080fd5b5061024761091e565b6040516102549190612e69565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f9190612ee9565b6109b0565b6040516102919190612f44565b60405180910390f35b3480156102a657600080fd5b506102af6109ce565b6040516102bc9190612fbe565b60405180910390f35b3480156102d157600080fd5b506102da6109f2565b6040516102e79190612fe8565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613003565b6109fc565b6040516103249190612f44565b60405180910390f35b34801561033957600080fd5b50610342610af4565b60405161034f9190613065565b60405180910390f35b34801561036457600080fd5b5061036d610afa565b60405161037a919061309c565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190612ee9565b610b03565b6040516103b79190612f44565b60405180910390f35b3480156103cc57600080fd5b506103d5610baf565b6040516103e29190613065565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906130b7565b610bd3565b60405161041f9190612f44565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190612d90565b610c29565b005b34801561045d57600080fd5b50610466610d13565b6040516104739190612fe8565b60405180910390f35b34801561048857600080fd5b50610491610d19565b60405161049e9190612f44565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c991906130b7565b610d2c565b6040516104db9190612fe8565b60405180910390f35b3480156104f057600080fd5b506104f9610d74565b005b34801561050757600080fd5b50610522600480360381019061051d9190613110565b610dfc565b005b34801561053057600080fd5b50610539610ed3565b005b34801561054757600080fd5b50610550610f87565b60405161055d9190613065565b60405180910390f35b34801561057257600080fd5b5061057b610fb1565b6040516105889190612e69565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190612d90565b611043565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613110565b6111a2565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190612ee9565b6112bb565b6040516106179190612f44565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190612ee9565b6113a6565b6040516106549190612f44565b60405180910390f35b34801561066957600080fd5b506106726113c4565b60405161067f9190612f44565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190613110565b6113d7565b005b3480156106bd57600080fd5b506106c66114fc565b6040516106d39190612fe8565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613150565b611502565b6040516107109190612f44565b60405180910390f35b34801561072557600080fd5b5061072e611657565b60405161073b9190612fe8565b60405180910390f35b34801561075057600080fd5b5061076b6004803603810190610766919061317d565b61165d565b6040516107789190612fe8565b60405180910390f35b34801561078d57600080fd5b506107966116e4565b6040516107a39190612fe8565b60405180910390f35b3480156107b857600080fd5b506107c16116ea565b6040516107ce9190613065565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f991906130b7565b611710565b005b34801561080c57600080fd5b50610815611808565b6040516108229190612fe8565b60405180910390f35b61083361180e565b73ffffffffffffffffffffffffffffffffffffffff16610851610f87565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90613209565b60405180910390fd5b81600f8190555080601081905550601054600f546108c59190613258565b600e81905550600e54601381905550600a600e54111561091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610911906132fa565b60405180910390fd5b5050565b60606003805461092d90613349565b80601f016020809104026020016040519081016040528092919081815260200182805461095990613349565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905090565b60006109c46109bd61180e565b8484611816565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610a098484846119e1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5461180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb906133ed565b60405180910390fd5b610ae885610ae061180e565b858403611816565b60019150509392505050565b61dead81565b60006012905090565b6000610ba5610b1061180e565b848460016000610b1e61180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba09190613258565b611816565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c3161180e565b73ffffffffffffffffffffffffffffffffffffffff16610c4f610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613209565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610cc39190613258565b600b81905550600a600b541115610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d06906132fa565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d7c61180e565b73ffffffffffffffffffffffffffffffffffffffff16610d9a610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790613209565b60405180910390fd5b610dfa60006123fb565b565b610e0461180e565b73ffffffffffffffffffffffffffffffffffffffff16610e22610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613209565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610edb61180e565b73ffffffffffffffffffffffffffffffffffffffff16610ef9610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690613209565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fc090613349565b80601f0160208091040260200160405190810160405280929190818152602001828054610fec90613349565b80156110395780601f1061100e57610100808354040283529160200191611039565b820191906000526020600020905b81548152906001019060200180831161101c57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108461180e565b73ffffffffffffffffffffffffffffffffffffffff16146110a457600080fd5b670de0b6b3a76400006103e860056110ba6109f2565b6110c4919061340d565b6110ce9190613496565b6110d89190613496565b82101561111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190613539565b60405180910390fd5b670de0b6b3a76400006103e860056111306109f2565b61113a919061340d565b6111449190613496565b61114e9190613496565b811015611190576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611187906135cb565b60405180910390fd5b80600981905550816007819055505050565b6111aa61180e565b73ffffffffffffffffffffffffffffffffffffffff166111c8610f87565b73ffffffffffffffffffffffffffffffffffffffff161461121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121590613209565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061365d565b60405180910390fd5b6112b782826124c1565b5050565b600080600160006112ca61180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906136ef565b60405180910390fd5b61139b61139261180e565b85858403611816565b600191505092915050565b60006113ba6113b361180e565b84846119e1565b6001905092915050565b600a60009054906101000a900460ff1681565b6113df61180e565b73ffffffffffffffffffffffffffffffffffffffff166113fd610f87565b73ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613209565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114f09190612f44565b60405180910390a25050565b60075481565b600061150c61180e565b73ffffffffffffffffffffffffffffffffffffffff1661152a610f87565b73ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613209565b60405180910390fd5b620186a0600161158e6109f2565b611598919061340d565b6115a29190613496565b8210156115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90613781565b60405180910390fd5b6103e860056115f16109f2565b6115fb919061340d565b6116059190613496565b821115611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90613813565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171861180e565b73ffffffffffffffffffffffffffffffffffffffff16611736610f87565b73ffffffffffffffffffffffffffffffffffffffff161461178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613209565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f3906138a5565b60405180910390fd5b611805816123fb565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90613937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed906139c9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119d49190612fe8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890613a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890613aed565b60405180910390fd5b6000811415611adb57611ad683836000612562565b6123f6565b611ae3610f87565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b515750611b21610f87565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdd5750600560149054906101000a900460ff16155b15611f7b57600a60009054906101000a900460ff16611cd757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c975750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613b59565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d7a5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ddc57600954611d8b83610d2c565b82611d969190613258565b1115611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90613bc5565b60405180910390fd5b611f7a565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e7f5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ece57600754811115611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec090613c57565b60405180910390fd5b611f79565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f7857600954611f2b83610d2c565b82611f369190613258565b1115611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e90613bc5565b60405180910390fd5b5b5b5b5b6000611f8630610d2c565b905060006008548210159050808015611fab5750600a60019054906101000a900460ff165b8015611fc45750600560149054906101000a900460ff16155b801561201a5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120705750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120c65750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561210a576001600560146101000a81548160ff0219169083151502179055506120ee6127e3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121c05750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ca57600090505b600081156123dd57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561222d57506000600e54115b156122c75761225a606461224c600e54886129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600e546010548261226d919061340d565b6122779190613496565b601260008282546122889190613258565b92505081905550600e54600f54826122a0919061340d565b6122aa9190613496565b601160008282546122bb9190613258565b925050819055506123b9565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561232257506000600b54115b156123b85761234f6064612341600b54886129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600b54600d5482612362919061340d565b61236c9190613496565b6012600082825461237d9190613258565b92505081905550600b54600c5482612395919061340d565b61239f9190613496565b601160008282546123b09190613258565b925050819055505b5b60008111156123ce576123cd873083612562565b5b80856123da9190613c77565b94505b6123e8878787612562565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c990613a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990613aed565b60405180910390fd5b61264d838383612a1c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ca90613d1d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127669190613258565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ca9190612fe8565b60405180910390a36127dd848484612a21565b50505050565b60006127ee30610d2c565b905060006011546012546128029190613258565b90506000808314806128145750600082145b15612821575050506129ee565b6014600854612830919061340d565b831115612849576014600854612846919061340d565b92505b60006002836012548661285c919061340d565b6128669190613496565b6128709190613496565b905060006128878286612a2690919063ffffffff16565b9050600047905061289782612a3c565b60006128ac8247612a2690919063ffffffff16565b905060006128d7876128c9601154856129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600081836128e79190613c77565b9050600060128190555060006011819055506000861180156129095750600081115b15612956576129188682612c79565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161294d93929190613d3d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161299c90613da5565b60006040518083038185875af1925050503d80600081146129d9576040519150601f19603f3d011682016040523d82523d6000602084013e6129de565b606091505b5050809750505050505050505050505b565b600081836129fe919061340d565b905092915050565b60008183612a149190613496565b905092915050565b505050565b505050565b60008183612a349190613c77565b905092915050565b6000600267ffffffffffffffff811115612a5957612a58613dba565b5b604051908082528060200260200182016040528015612a875781602001602082028036833780820191505090505b5090503081600081518110612a9f57612a9e613de9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b689190613e2d565b81600181518110612b7c57612b7b613de9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612be1307f000000000000000000000000000000000000000000000000000000000000000084611816565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c43959493929190613f53565b600060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505050505050565b612ca4307f000000000000000000000000000000000000000000000000000000000000000084611816565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d0b96959493929190613fad565b60606040518083038185885af1158015612d29573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d4e9190614023565b5050505050565b600080fd5b6000819050919050565b612d6d81612d5a565b8114612d7857600080fd5b50565b600081359050612d8a81612d64565b92915050565b60008060408385031215612da757612da6612d55565b5b6000612db585828601612d7b565b9250506020612dc685828601612d7b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e0a578082015181840152602081019050612def565b83811115612e19576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e3b82612dd0565b612e458185612ddb565b9350612e55818560208601612dec565b612e5e81612e1f565b840191505092915050565b60006020820190508181036000830152612e838184612e30565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612eb682612e8b565b9050919050565b612ec681612eab565b8114612ed157600080fd5b50565b600081359050612ee381612ebd565b92915050565b60008060408385031215612f0057612eff612d55565b5b6000612f0e85828601612ed4565b9250506020612f1f85828601612d7b565b9150509250929050565b60008115159050919050565b612f3e81612f29565b82525050565b6000602082019050612f596000830184612f35565b92915050565b6000819050919050565b6000612f84612f7f612f7a84612e8b565b612f5f565b612e8b565b9050919050565b6000612f9682612f69565b9050919050565b6000612fa882612f8b565b9050919050565b612fb881612f9d565b82525050565b6000602082019050612fd36000830184612faf565b92915050565b612fe281612d5a565b82525050565b6000602082019050612ffd6000830184612fd9565b92915050565b60008060006060848603121561301c5761301b612d55565b5b600061302a86828701612ed4565b935050602061303b86828701612ed4565b925050604061304c86828701612d7b565b9150509250925092565b61305f81612eab565b82525050565b600060208201905061307a6000830184613056565b92915050565b600060ff82169050919050565b61309681613080565b82525050565b60006020820190506130b1600083018461308d565b92915050565b6000602082840312156130cd576130cc612d55565b5b60006130db84828501612ed4565b91505092915050565b6130ed81612f29565b81146130f857600080fd5b50565b60008135905061310a816130e4565b92915050565b6000806040838503121561312757613126612d55565b5b600061313585828601612ed4565b9250506020613146858286016130fb565b9150509250929050565b60006020828403121561316657613165612d55565b5b600061317484828501612d7b565b91505092915050565b6000806040838503121561319457613193612d55565b5b60006131a285828601612ed4565b92505060206131b385828601612ed4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131f3602083612ddb565b91506131fe826131bd565b602082019050919050565b60006020820190508181036000830152613222816131e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061326382612d5a565b915061326e83612d5a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132a3576132a2613229565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006132e4601d83612ddb565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336157607f821691505b602082108114156133755761337461331a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133d7602883612ddb565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b600061341882612d5a565b915061342383612d5a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345c5761345b613229565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134a182612d5a565b91506134ac83612d5a565b9250826134bc576134bb613467565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613523602183612ddb565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602483612ddb565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613647603983612ddb565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136d9602583612ddb565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061376b603583612ddb565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006137fd603483612ddb565b9150613808826137a1565b604082019050919050565b6000602082019050818103600083015261382c816137f0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388f602683612ddb565b915061389a82613833565b604082019050919050565b600060208201905081810360008301526138be81613882565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613921602483612ddb565b915061392c826138c5565b604082019050919050565b6000602082019050818103600083015261395081613914565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139b3602283612ddb565b91506139be82613957565b604082019050919050565b600060208201905081810360008301526139e2816139a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a45602583612ddb565b9150613a50826139e9565b604082019050919050565b60006020820190508181036000830152613a7481613a38565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad7602383612ddb565b9150613ae282613a7b565b604082019050919050565b60006020820190508181036000830152613b0681613aca565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b43601683612ddb565b9150613b4e82613b0d565b602082019050919050565b60006020820190508181036000830152613b7281613b36565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613baf601383612ddb565b9150613bba82613b79565b602082019050919050565b60006020820190508181036000830152613bde81613ba2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613c41603683612ddb565b9150613c4c82613be5565b604082019050919050565b60006020820190508181036000830152613c7081613c34565b9050919050565b6000613c8282612d5a565b9150613c8d83612d5a565b925082821015613ca057613c9f613229565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d07602683612ddb565b9150613d1282613cab565b604082019050919050565b60006020820190508181036000830152613d3681613cfa565b9050919050565b6000606082019050613d526000830186612fd9565b613d5f6020830185612fd9565b613d6c6040830184612fd9565b949350505050565b600081905092915050565b50565b6000613d8f600083613d74565b9150613d9a82613d7f565b600082019050919050565b6000613db082613d82565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e2781612ebd565b92915050565b600060208284031215613e4357613e42612d55565b5b6000613e5184828501613e18565b91505092915050565b6000819050919050565b6000613e7f613e7a613e7584613e5a565b612f5f565b612d5a565b9050919050565b613e8f81613e64565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613eca81612eab565b82525050565b6000613edc8383613ec1565b60208301905092915050565b6000602082019050919050565b6000613f0082613e95565b613f0a8185613ea0565b9350613f1583613eb1565b8060005b83811015613f46578151613f2d8882613ed0565b9750613f3883613ee8565b925050600181019050613f19565b5085935050505092915050565b600060a082019050613f686000830188612fd9565b613f756020830187613e86565b8181036040830152613f878186613ef5565b9050613f966060830185613056565b613fa36080830184612fd9565b9695505050505050565b600060c082019050613fc26000830189613056565b613fcf6020830188612fd9565b613fdc6040830187613e86565b613fe96060830186613e86565b613ff66080830185613056565b61400360a0830184612fd9565b979650505050505050565b60008151905061401d81612d64565b92915050565b60008060006060848603121561403c5761403b612d55565b5b600061404a8682870161400e565b935050602061405b8682870161400e565b925050604061406c8682870161400e565b915050925092509256fea26469706673582212207b6f1a79dd1790cb78e8975ecaa11d1ecde88b52a400868363803bedd7d7471764736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063c0246668116100a0578063dd62ed3e1161006f578063dd62ed3e14610744578063e2f4560514610781578063f25f4b56146107ac578063f2fde38b146107d7578063f8b45b051461080057610204565b8063c024666814610688578063c8c8ebe4146106b1578063d257b34f146106dc578063d85ba0631461071957610204565b80639a7a23d6116100dc5780639a7a23d6146105ba578063a457c2d7146105e3578063a9059cbb14610620578063bbc0c7421461065d57610204565b80638a8c523c146105245780638da5cb5b1461053b57806395d89b4114610566578063961883991461059157610204565b806339509351116101905780636a486a8e1161015f5780636a486a8e146104515780636ddd17131461047c57806370a08231146104a7578063715018a6146104e45780637571336a146104fb57610204565b8063395093511461038357806349bd5a5e146103c05780634fbee193146103eb57806366ca9b831461042857610204565b806318160ddd116101cc57806318160ddd146102c557806323b872dd146102f057806327c8f8351461032d578063313ce5671461035857610204565b806302dbd8f81461020957806306fdde0314610232578063095ea7b31461025d5780631694505e1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612d90565b61082b565b005b34801561023e57600080fd5b5061024761091e565b6040516102549190612e69565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f9190612ee9565b6109b0565b6040516102919190612f44565b60405180910390f35b3480156102a657600080fd5b506102af6109ce565b6040516102bc9190612fbe565b60405180910390f35b3480156102d157600080fd5b506102da6109f2565b6040516102e79190612fe8565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613003565b6109fc565b6040516103249190612f44565b60405180910390f35b34801561033957600080fd5b50610342610af4565b60405161034f9190613065565b60405180910390f35b34801561036457600080fd5b5061036d610afa565b60405161037a919061309c565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190612ee9565b610b03565b6040516103b79190612f44565b60405180910390f35b3480156103cc57600080fd5b506103d5610baf565b6040516103e29190613065565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906130b7565b610bd3565b60405161041f9190612f44565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190612d90565b610c29565b005b34801561045d57600080fd5b50610466610d13565b6040516104739190612fe8565b60405180910390f35b34801561048857600080fd5b50610491610d19565b60405161049e9190612f44565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c991906130b7565b610d2c565b6040516104db9190612fe8565b60405180910390f35b3480156104f057600080fd5b506104f9610d74565b005b34801561050757600080fd5b50610522600480360381019061051d9190613110565b610dfc565b005b34801561053057600080fd5b50610539610ed3565b005b34801561054757600080fd5b50610550610f87565b60405161055d9190613065565b60405180910390f35b34801561057257600080fd5b5061057b610fb1565b6040516105889190612e69565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190612d90565b611043565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613110565b6111a2565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190612ee9565b6112bb565b6040516106179190612f44565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190612ee9565b6113a6565b6040516106549190612f44565b60405180910390f35b34801561066957600080fd5b506106726113c4565b60405161067f9190612f44565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190613110565b6113d7565b005b3480156106bd57600080fd5b506106c66114fc565b6040516106d39190612fe8565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613150565b611502565b6040516107109190612f44565b60405180910390f35b34801561072557600080fd5b5061072e611657565b60405161073b9190612fe8565b60405180910390f35b34801561075057600080fd5b5061076b6004803603810190610766919061317d565b61165d565b6040516107789190612fe8565b60405180910390f35b34801561078d57600080fd5b506107966116e4565b6040516107a39190612fe8565b60405180910390f35b3480156107b857600080fd5b506107c16116ea565b6040516107ce9190613065565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f991906130b7565b611710565b005b34801561080c57600080fd5b50610815611808565b6040516108229190612fe8565b60405180910390f35b61083361180e565b73ffffffffffffffffffffffffffffffffffffffff16610851610f87565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90613209565b60405180910390fd5b81600f8190555080601081905550601054600f546108c59190613258565b600e81905550600e54601381905550600a600e54111561091a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610911906132fa565b60405180910390fd5b5050565b60606003805461092d90613349565b80601f016020809104026020016040519081016040528092919081815260200182805461095990613349565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905090565b60006109c46109bd61180e565b8484611816565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610a098484846119e1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5461180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb906133ed565b60405180910390fd5b610ae885610ae061180e565b858403611816565b60019150509392505050565b61dead81565b60006012905090565b6000610ba5610b1061180e565b848460016000610b1e61180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba09190613258565b611816565b6001905092915050565b7f0000000000000000000000006388e2c5fa7512cf8fa0defea51e12a642745cbb81565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c3161180e565b73ffffffffffffffffffffffffffffffffffffffff16610c4f610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613209565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610cc39190613258565b600b81905550600a600b541115610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d06906132fa565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d7c61180e565b73ffffffffffffffffffffffffffffffffffffffff16610d9a610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790613209565b60405180910390fd5b610dfa60006123fb565b565b610e0461180e565b73ffffffffffffffffffffffffffffffffffffffff16610e22610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613209565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610edb61180e565b73ffffffffffffffffffffffffffffffffffffffff16610ef9610f87565b73ffffffffffffffffffffffffffffffffffffffff1614610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690613209565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fc090613349565b80601f0160208091040260200160405190810160405280929190818152602001828054610fec90613349565b80156110395780601f1061100e57610100808354040283529160200191611039565b820191906000526020600020905b81548152906001019060200180831161101c57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108461180e565b73ffffffffffffffffffffffffffffffffffffffff16146110a457600080fd5b670de0b6b3a76400006103e860056110ba6109f2565b6110c4919061340d565b6110ce9190613496565b6110d89190613496565b82101561111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190613539565b60405180910390fd5b670de0b6b3a76400006103e860056111306109f2565b61113a919061340d565b6111449190613496565b61114e9190613496565b811015611190576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611187906135cb565b60405180910390fd5b80600981905550816007819055505050565b6111aa61180e565b73ffffffffffffffffffffffffffffffffffffffff166111c8610f87565b73ffffffffffffffffffffffffffffffffffffffff161461121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121590613209565b60405180910390fd5b7f0000000000000000000000006388e2c5fa7512cf8fa0defea51e12a642745cbb73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061365d565b60405180910390fd5b6112b782826124c1565b5050565b600080600160006112ca61180e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906136ef565b60405180910390fd5b61139b61139261180e565b85858403611816565b600191505092915050565b60006113ba6113b361180e565b84846119e1565b6001905092915050565b600a60009054906101000a900460ff1681565b6113df61180e565b73ffffffffffffffffffffffffffffffffffffffff166113fd610f87565b73ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613209565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114f09190612f44565b60405180910390a25050565b60075481565b600061150c61180e565b73ffffffffffffffffffffffffffffffffffffffff1661152a610f87565b73ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613209565b60405180910390fd5b620186a0600161158e6109f2565b611598919061340d565b6115a29190613496565b8210156115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90613781565b60405180910390fd5b6103e860056115f16109f2565b6115fb919061340d565b6116059190613496565b821115611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90613813565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171861180e565b73ffffffffffffffffffffffffffffffffffffffff16611736610f87565b73ffffffffffffffffffffffffffffffffffffffff161461178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613209565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f3906138a5565b60405180910390fd5b611805816123fb565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90613937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed906139c9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119d49190612fe8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890613a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890613aed565b60405180910390fd5b6000811415611adb57611ad683836000612562565b6123f6565b611ae3610f87565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b515750611b21610f87565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdd5750600560149054906101000a900460ff16155b15611f7b57600a60009054906101000a900460ff16611cd757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c975750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613b59565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d7a5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ddc57600954611d8b83610d2c565b82611d969190613258565b1115611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90613bc5565b60405180910390fd5b611f7a565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e7f5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ece57600754811115611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec090613c57565b60405180910390fd5b611f79565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f7857600954611f2b83610d2c565b82611f369190613258565b1115611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e90613bc5565b60405180910390fd5b5b5b5b5b6000611f8630610d2c565b905060006008548210159050808015611fab5750600a60019054906101000a900460ff165b8015611fc45750600560149054906101000a900460ff16155b801561201a5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120705750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120c65750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561210a576001600560146101000a81548160ff0219169083151502179055506120ee6127e3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121c05750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ca57600090505b600081156123dd57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561222d57506000600e54115b156122c75761225a606461224c600e54886129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600e546010548261226d919061340d565b6122779190613496565b601260008282546122889190613258565b92505081905550600e54600f54826122a0919061340d565b6122aa9190613496565b601160008282546122bb9190613258565b925050819055506123b9565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561232257506000600b54115b156123b85761234f6064612341600b54886129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600b54600d5482612362919061340d565b61236c9190613496565b6012600082825461237d9190613258565b92505081905550600b54600c5482612395919061340d565b61239f9190613496565b601160008282546123b09190613258565b925050819055505b5b60008111156123ce576123cd873083612562565b5b80856123da9190613c77565b94505b6123e8878787612562565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c990613a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990613aed565b60405180910390fd5b61264d838383612a1c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ca90613d1d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127669190613258565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ca9190612fe8565b60405180910390a36127dd848484612a21565b50505050565b60006127ee30610d2c565b905060006011546012546128029190613258565b90506000808314806128145750600082145b15612821575050506129ee565b6014600854612830919061340d565b831115612849576014600854612846919061340d565b92505b60006002836012548661285c919061340d565b6128669190613496565b6128709190613496565b905060006128878286612a2690919063ffffffff16565b9050600047905061289782612a3c565b60006128ac8247612a2690919063ffffffff16565b905060006128d7876128c9601154856129f090919063ffffffff16565b612a0690919063ffffffff16565b9050600081836128e79190613c77565b9050600060128190555060006011819055506000861180156129095750600081115b15612956576129188682612c79565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260125460405161294d93929190613d3d565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161299c90613da5565b60006040518083038185875af1925050503d80600081146129d9576040519150601f19603f3d011682016040523d82523d6000602084013e6129de565b606091505b5050809750505050505050505050505b565b600081836129fe919061340d565b905092915050565b60008183612a149190613496565b905092915050565b505050565b505050565b60008183612a349190613c77565b905092915050565b6000600267ffffffffffffffff811115612a5957612a58613dba565b5b604051908082528060200260200182016040528015612a875781602001602082028036833780820191505090505b5090503081600081518110612a9f57612a9e613de9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b689190613e2d565b81600181518110612b7c57612b7b613de9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612be1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611816565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c43959493929190613f53565b600060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505050505050565b612ca4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611816565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612d0b96959493929190613fad565b60606040518083038185885af1158015612d29573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d4e9190614023565b5050505050565b600080fd5b6000819050919050565b612d6d81612d5a565b8114612d7857600080fd5b50565b600081359050612d8a81612d64565b92915050565b60008060408385031215612da757612da6612d55565b5b6000612db585828601612d7b565b9250506020612dc685828601612d7b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e0a578082015181840152602081019050612def565b83811115612e19576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e3b82612dd0565b612e458185612ddb565b9350612e55818560208601612dec565b612e5e81612e1f565b840191505092915050565b60006020820190508181036000830152612e838184612e30565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612eb682612e8b565b9050919050565b612ec681612eab565b8114612ed157600080fd5b50565b600081359050612ee381612ebd565b92915050565b60008060408385031215612f0057612eff612d55565b5b6000612f0e85828601612ed4565b9250506020612f1f85828601612d7b565b9150509250929050565b60008115159050919050565b612f3e81612f29565b82525050565b6000602082019050612f596000830184612f35565b92915050565b6000819050919050565b6000612f84612f7f612f7a84612e8b565b612f5f565b612e8b565b9050919050565b6000612f9682612f69565b9050919050565b6000612fa882612f8b565b9050919050565b612fb881612f9d565b82525050565b6000602082019050612fd36000830184612faf565b92915050565b612fe281612d5a565b82525050565b6000602082019050612ffd6000830184612fd9565b92915050565b60008060006060848603121561301c5761301b612d55565b5b600061302a86828701612ed4565b935050602061303b86828701612ed4565b925050604061304c86828701612d7b565b9150509250925092565b61305f81612eab565b82525050565b600060208201905061307a6000830184613056565b92915050565b600060ff82169050919050565b61309681613080565b82525050565b60006020820190506130b1600083018461308d565b92915050565b6000602082840312156130cd576130cc612d55565b5b60006130db84828501612ed4565b91505092915050565b6130ed81612f29565b81146130f857600080fd5b50565b60008135905061310a816130e4565b92915050565b6000806040838503121561312757613126612d55565b5b600061313585828601612ed4565b9250506020613146858286016130fb565b9150509250929050565b60006020828403121561316657613165612d55565b5b600061317484828501612d7b565b91505092915050565b6000806040838503121561319457613193612d55565b5b60006131a285828601612ed4565b92505060206131b385828601612ed4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131f3602083612ddb565b91506131fe826131bd565b602082019050919050565b60006020820190508181036000830152613222816131e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061326382612d5a565b915061326e83612d5a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132a3576132a2613229565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006132e4601d83612ddb565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336157607f821691505b602082108114156133755761337461331a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133d7602883612ddb565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b600061341882612d5a565b915061342383612d5a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345c5761345b613229565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134a182612d5a565b91506134ac83612d5a565b9250826134bc576134bb613467565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613523602183612ddb565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602483612ddb565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613647603983612ddb565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136d9602583612ddb565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061376b603583612ddb565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006137fd603483612ddb565b9150613808826137a1565b604082019050919050565b6000602082019050818103600083015261382c816137f0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388f602683612ddb565b915061389a82613833565b604082019050919050565b600060208201905081810360008301526138be81613882565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613921602483612ddb565b915061392c826138c5565b604082019050919050565b6000602082019050818103600083015261395081613914565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139b3602283612ddb565b91506139be82613957565b604082019050919050565b600060208201905081810360008301526139e2816139a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a45602583612ddb565b9150613a50826139e9565b604082019050919050565b60006020820190508181036000830152613a7481613a38565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad7602383612ddb565b9150613ae282613a7b565b604082019050919050565b60006020820190508181036000830152613b0681613aca565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b43601683612ddb565b9150613b4e82613b0d565b602082019050919050565b60006020820190508181036000830152613b7281613b36565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613baf601383612ddb565b9150613bba82613b79565b602082019050919050565b60006020820190508181036000830152613bde81613ba2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613c41603683612ddb565b9150613c4c82613be5565b604082019050919050565b60006020820190508181036000830152613c7081613c34565b9050919050565b6000613c8282612d5a565b9150613c8d83612d5a565b925082821015613ca057613c9f613229565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d07602683612ddb565b9150613d1282613cab565b604082019050919050565b60006020820190508181036000830152613d3681613cfa565b9050919050565b6000606082019050613d526000830186612fd9565b613d5f6020830185612fd9565b613d6c6040830184612fd9565b949350505050565b600081905092915050565b50565b6000613d8f600083613d74565b9150613d9a82613d7f565b600082019050919050565b6000613db082613d82565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e2781612ebd565b92915050565b600060208284031215613e4357613e42612d55565b5b6000613e5184828501613e18565b91505092915050565b6000819050919050565b6000613e7f613e7a613e7584613e5a565b612f5f565b612d5a565b9050919050565b613e8f81613e64565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613eca81612eab565b82525050565b6000613edc8383613ec1565b60208301905092915050565b6000602082019050919050565b6000613f0082613e95565b613f0a8185613ea0565b9350613f1583613eb1565b8060005b83811015613f46578151613f2d8882613ed0565b9750613f3883613ee8565b925050600181019050613f19565b5085935050505092915050565b600060a082019050613f686000830188612fd9565b613f756020830187613e86565b8181036040830152613f878186613ef5565b9050613f966060830185613056565b613fa36080830184612fd9565b9695505050505050565b600060c082019050613fc26000830189613056565b613fcf6020830188612fd9565b613fdc6040830187613e86565b613fe96060830186613e86565b613ff66080830185613056565b61400360a0830184612fd9565b979650505050505050565b60008151905061401d81612d64565b92915050565b60008060006060848603121561403c5761403b612d55565b5b600061404a8682870161400e565b935050602061405b8682870161400e565b925050604061406c8682870161400e565b915050925092509256fea26469706673582212207b6f1a79dd1790cb78e8975ecaa11d1ecde88b52a400868363803bedd7d7471764736f6c634300080a0033
Deployed Bytecode Sourcemap
14326:12133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19388:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2860:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3774:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14405:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3181:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3951:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14508:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3080:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4451:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14463:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20474:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19045:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14940:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14788:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3297:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;985:112;;;;;;;;;;;;;:::i;:::-;;18845:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17645:112;;;;;;;;;;;;;:::i;:::-;;762:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2968:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18320:517;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19966:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4674:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3432:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14748:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19776:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14633:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17765:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14828:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3615:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14675:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14600:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1105:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14715:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19388:380;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19532:13:::1;19513:16;:32;;;;19575:13;19556:16;:32;;;;19634:16;;19615;;:35;;;;:::i;:::-;19599:13;:51;;;;19675:13;;19661:11;:27;;;;19724:2;19707:13;;:19;;19699:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19388:380:::0;;:::o;2860:100::-;2914:13;2947:5;2940:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2860:100;:::o;3774:169::-;3857:4;3874:39;3883:12;:10;:12::i;:::-;3897:7;3906:6;3874:8;:39::i;:::-;3931:4;3924:11;;3774:169;;;;:::o;14405:51::-;;;:::o;3181:108::-;3242:7;3269:12;;3262:19;;3181:108;:::o;3951:492::-;4091:4;4108:36;4118:6;4126:9;4137:6;4108:9;:36::i;:::-;4157:24;4184:11;:19;4196:6;4184:19;;;;;;;;;;;;;;;:33;4204:12;:10;:12::i;:::-;4184:33;;;;;;;;;;;;;;;;4157:60;;4256:6;4236:16;:26;;4228:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4343:57;4352:6;4360:12;:10;:12::i;:::-;4393:6;4374:16;:25;4343:8;:57::i;:::-;4431:4;4424:11;;;3951:492;;;;;:::o;14508:53::-;14554:6;14508:53;:::o;3080:93::-;3138:5;3163:2;3156:9;;3080:93;:::o;4451:215::-;4539:4;4556:80;4565:12;:10;:12::i;:::-;4579:7;4625:10;4588:11;:25;4600:12;:10;:12::i;:::-;4588:25;;;;;;;;;;;;;;;:34;4614:7;4588:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4556:8;:80::i;:::-;4654:4;4647:11;;4451:215;;;;:::o;14463:38::-;;;:::o;20474:126::-;20540:4;20564:19;:28;20584:7;20564:28;;;;;;;;;;;;;;;;;;;;;;;;;20557:35;;20474:126;;;:::o;19045:335::-;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19187:13:::1;19169:15;:31;;;;19229:13;19211:15;:31;;;;19286:15;;19268;;:33;;;;:::i;:::-;19253:12;:48;;;;19336:2;19320:12;;:18;;19312:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19045:335:::0;;:::o;14940:28::-;;;;:::o;14788:31::-;;;;;;;;;;;;;:::o;3297:127::-;3371:7;3398:9;:18;3408:7;3398:18;;;;;;;;;;;;;;;;3391:25;;3297:127;;;:::o;985:112::-;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1059:30:::1;1086:1;1059:18;:30::i;:::-;985:112::o:0;18845:167::-;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19000:4:::1;18958:31;:39;18990:6;18958:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18845:167:::0;;:::o;17645:112::-;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17716:4:::1;17700:13;;:20;;;;;;;;;;;;;;;;;;17745:4;17731:11;;:18;;;;;;;;;;;;;;;;;;17645:112::o:0;762:87::-;808:7;835:6;;;;;;;;;;;828:13;;762:87;:::o;2968:104::-;3024:13;3057:7;3050:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2968:104;:::o;18320:517::-;18443:9;;;;;;;;;;;18427:25;;:12;:10;:12::i;:::-;:25;;;18419:34;;;;;;18530:4;18522;18517:1;18501:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18500:26;;;;:::i;:::-;18499:35;;;;:::i;:::-;18486:9;:48;;18464:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18678:4;18670;18665:1;18649:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18648:26;;;;:::i;:::-;18647:35;;;;:::i;:::-;18628:15;:54;;18606:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18769:15;18757:9;:27;;;;18819:9;18796:20;:32;;;;18320:517;;:::o;19966:304::-;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20110:13:::1;20102:21;;:4;:21;;;;20080:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;20221:41;20250:4;20256:5;20221:28;:41::i;:::-;19966:304:::0;;:::o;4674:413::-;4767:4;4784:24;4811:11;:25;4823:12;:10;:12::i;:::-;4811:25;;;;;;;;;;;;;;;:34;4837:7;4811:34;;;;;;;;;;;;;;;;4784:61;;4884:15;4864:16;:35;;4856:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4977:67;4986:12;:10;:12::i;:::-;5000:7;5028:15;5009:16;:34;4977:8;:67::i;:::-;5075:4;5068:11;;;4674:413;;;;:::o;3432:175::-;3518:4;3535:42;3545:12;:10;:12::i;:::-;3559:9;3570:6;3535:9;:42::i;:::-;3595:4;3588:11;;3432:175;;;;:::o;14748:33::-;;;;;;;;;;;;;:::o;19776:182::-;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19892:8:::1;19861:19;:28;19881:7;19861:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19932:7;19916:34;;;19941:8;19916:34;;;;;;:::i;:::-;;;;;;;;19776:182:::0;;:::o;14633:35::-;;;;:::o;17765:497::-;17873:4;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17952:6:::1;17947:1;17931:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17930:28;;;;:::i;:::-;17917:9;:41;;17895:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18107:4;18102:1;18086:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18085:26;;;;:::i;:::-;18072:9;:39;;18050:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18223:9;18202:18;:30;;;;18250:4;18243:11;;17765:497:::0;;;:::o;14828:27::-;;;;:::o;3615:151::-;3704:7;3731:11;:18;3743:5;3731:18;;;;;;;;;;;;;;;:27;3750:7;3731:27;;;;;;;;;;;;;;;;3724:34;;3615:151;;;;:::o;14675:33::-;;;;:::o;14600:24::-;;;;;;;;;;;;;:::o;1105:201::-;908:12;:10;:12::i;:::-;897:23;;:7;:5;:7::i;:::-;:23;;;889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1214:1:::1;1194:22;;:8;:22;;;;1186:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1270:28;1289:8;1270:18;:28::i;:::-;1105:201:::0;:::o;14715:24::-;;;;:::o;308:98::-;361:7;388:10;381:17;;308:98;:::o;6243:380::-;6396:1;6379:19;;:5;:19;;;;6371:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6477:1;6458:21;;:7;:21;;;;6450:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6561:6;6531:11;:18;6543:5;6531:18;;;;;;;;;;;;;;;:27;6550:7;6531:27;;;;;;;;;;;;;;;:36;;;;6599:7;6583:32;;6592:5;6583:32;;;6608:6;6583:32;;;;;;:::i;:::-;;;;;;;;6243:380;;;:::o;20608:3497::-;20756:1;20740:18;;:4;:18;;;;20732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20833:1;20819:16;;:2;:16;;;;20811:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20902:1;20892:6;:11;20888:93;;;20920:28;20936:4;20942:2;20946:1;20920:15;:28::i;:::-;20963:7;;20888:93;21031:7;:5;:7::i;:::-;21023:15;;:4;:15;;;;:49;;;;;21065:7;:5;:7::i;:::-;21059:13;;:2;:13;;;;21023:49;:86;;;;;21107:1;21093:16;;:2;:16;;;;21023:86;:128;;;;;21144:6;21130:21;;:2;:21;;;;21023:128;:158;;;;;21173:8;;;;;;;;;;;21172:9;21023:158;21001:1514;;;21221:13;;;;;;;;;;;21216:223;;21293:19;:25;21313:4;21293:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21322:19;:23;21342:2;21322:23;;;;;;;;;;;;;;;;;;;;;;;;;21293:52;21259:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21216:223;21513:25;:31;21539:4;21513:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21570:31;:35;21602:2;21570:35;;;;;;;;;;;;;;;;;;;;;;;;;21569:36;21513:92;21487:1013;;;21730:9;;21713:13;21723:2;21713:9;:13::i;:::-;21704:6;:22;;;;:::i;:::-;:35;;21670:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21487:1013;;;21908:25;:29;21934:2;21908:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21963:31;:37;21995:4;21963:37;;;;;;;;;;;;;;;;;;;;;;;;;21962:38;21908:92;21882:618;;;22087:20;;22077:6;:30;;22043:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21882:618;;;22280:31;:35;22312:2;22280:35;;;;;;;;;;;;;;;;;;;;;;;;;22275:225;;22400:9;;22383:13;22393:2;22383:9;:13::i;:::-;22374:6;:22;;;;:::i;:::-;:35;;22340:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22275:225;21882:618;21487:1013;21001:1514;22527:28;22558:24;22576:4;22558:9;:24::i;:::-;22527:55;;22595:12;22634:18;;22610:20;:42;;22595:57;;22683:7;:35;;;;;22707:11;;;;;;;;;;;22683:35;:61;;;;;22736:8;;;;;;;;;;;22735:9;22683:61;:110;;;;;22762:25;:31;22788:4;22762:31;;;;;;;;;;;;;;;;;;;;;;;;;22761:32;22683:110;:153;;;;;22811:19;:25;22831:4;22811:25;;;;;;;;;;;;;;;;;;;;;;;;;22810:26;22683:153;:194;;;;;22854:19;:23;22874:2;22854:23;;;;;;;;;;;;;;;;;;;;;;;;;22853:24;22683:194;22665:326;;;22915:4;22904:8;;:15;;;;;;;;;;;;;;;;;;22936:10;:8;:10::i;:::-;22974:5;22963:8;;:16;;;;;;;;;;;;;;;;;;22665:326;23003:12;23019:8;;;;;;;;;;;23018:9;23003:24;;23044:19;:25;23064:4;23044:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23073:19;:23;23093:2;23073:23;;;;;;;;;;;;;;;;;;;;;;;;;23044:52;23040:100;;;23123:5;23113:15;;23040:100;23152:12;23185:7;23181:831;;;23237:25;:29;23263:2;23237:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23286:1;23270:13;;:17;23237:50;23233:630;;;23315:34;23345:3;23315:25;23326:13;;23315:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23308:41;;23418:13;;23398:16;;23391:4;:23;;;;:::i;:::-;23390:41;;;;:::i;:::-;23368:18;;:63;;;;;;;:::i;:::-;;;;;;;;23500:13;;23480:16;;23473:4;:23;;;;:::i;:::-;23472:41;;;;:::i;:::-;23450:18;;:63;;;;;;;:::i;:::-;;;;;;;;23233:630;;;23575:25;:31;23601:4;23575:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23625:1;23610:12;;:16;23575:51;23571:292;;;23654:33;23683:3;23654:24;23665:12;;23654:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23647:40;;23755:12;;23736:15;;23729:4;:22;;;;:::i;:::-;23728:39;;;;:::i;:::-;23706:18;;:61;;;;;;;:::i;:::-;;;;;;;;23835:12;;23816:15;;23809:4;:22;;;;:::i;:::-;23808:39;;;;:::i;:::-;23786:18;;:61;;;;;;;:::i;:::-;;;;;;;;23571:292;23233:630;23890:1;23883:4;:8;23879:91;;;23912:42;23928:4;23942;23949;23912:15;:42::i;:::-;23879:91;23996:4;23986:14;;;;;:::i;:::-;;;23181:831;24024:33;24040:4;24046:2;24050:6;24024:15;:33::i;:::-;24084:11;;24068:13;:27;;;;20721:3384;;;;20608:3497;;;;:::o;1314:191::-;1388:16;1407:6;;;;;;;;;;;1388:25;;1433:8;1424:6;;:17;;;;;;;;;;;;;;;;;;1488:8;1457:40;;1478:8;1457:40;;;;;;;;;;;;1377:128;1314:191;:::o;20278:188::-;20395:5;20361:25;:31;20387:4;20361:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20452:5;20418:40;;20446:4;20418:40;;;;;;;;;;;;20278:188;;:::o;5095:733::-;5253:1;5235:20;;:6;:20;;;;5227:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5337:1;5316:23;;:9;:23;;;;5308:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5392:47;5413:6;5421:9;5432:6;5392:20;:47::i;:::-;5452:21;5476:9;:17;5486:6;5476:17;;;;;;;;;;;;;;;;5452:41;;5529:6;5512:13;:23;;5504:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5650:6;5634:13;:22;5614:9;:17;5624:6;5614:17;;;;;;;;;;;;;;;:42;;;;5702:6;5678:9;:20;5688:9;5678:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5743:9;5726:35;;5735:6;5726:35;;;5754:6;5726:35;;;;;;:::i;:::-;;;;;;;;5774:46;5794:6;5802:9;5813:6;5774:19;:46::i;:::-;5216:612;5095:733;;;:::o;25000:1456::-;25039:23;25065:24;25083:4;25065:9;:24::i;:::-;25039:50;;25100:25;25162:18;;25128;;:52;;;;:::i;:::-;25100:80;;25191:12;25239:1;25220:15;:20;:46;;;;25265:1;25244:17;:22;25220:46;25216:85;;;25283:7;;;;;25216:85;25356:2;25335:18;;:23;;;;:::i;:::-;25317:15;:41;25313:115;;;25414:2;25393:18;;:23;;;;:::i;:::-;25375:41;;25313:115;25440:23;25553:1;25520:17;25485:18;;25467:15;:36;;;;:::i;:::-;25466:71;;;;:::i;:::-;:88;;;;:::i;:::-;25440:114;;25565:26;25594:36;25614:15;25594;:19;;:36;;;;:::i;:::-;25565:65;;25643:25;25671:21;25643:49;;25705:36;25722:18;25705:16;:36::i;:::-;25754:18;25775:44;25801:17;25775:21;:25;;:44;;;;:::i;:::-;25754:65;;25832:23;25858:81;25911:17;25858:34;25873:18;;25858:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;25832:107;;25952:23;25991:15;25978:10;:28;;;;:::i;:::-;25952:54;;26040:1;26019:18;:22;;;;26073:1;26052:18;:22;;;;26109:1;26091:15;:19;:42;;;;;26132:1;26114:15;:19;26091:42;26087:278;;;26150:46;26163:15;26180;26150:12;:46::i;:::-;26216:137;26249:18;26286:15;26320:18;;26216:137;;;;;;;;:::i;:::-;;;;;;;;26087:278;26399:9;;;;;;;;;;;26391:23;;26422:21;26391:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26377:71;;;;;25028:1428;;;;;;;;;25000:1456;:::o;8249:98::-;8307:7;8338:1;8334;:5;;;;:::i;:::-;8327:12;;8249:98;;;;:::o;8355:::-;8413:7;8444:1;8440;:5;;;;:::i;:::-;8433:12;;8355:98;;;;:::o;6631:125::-;;;;:::o;6764:124::-;;;;:::o;8143:98::-;8201:7;8232:1;8228;:5;;;;:::i;:::-;8221:12;;8143:98;;;;:::o;24113:503::-;24181:21;24219:1;24205:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24181:40;;24250:4;24232;24237:1;24232:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24276:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24266:4;24271:1;24266:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24311:62;24328:4;24343:15;24361:11;24311:8;:62::i;:::-;24412:15;:66;;;24493:11;24519:1;24535:4;24562;24582:15;24412:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24168:448;24113:503;:::o;24624:368::-;24707:62;24724:4;24739:15;24757:11;24707:8;:62::i;:::-;24782:15;:31;;;24821:9;24854:4;24874:11;24900:1;24916;14554:6;24958:15;24782:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24624:368;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:60::-;4002:3;4023:5;4016:12;;3974:60;;;:::o;4040:142::-;4090:9;4123:53;4141:34;4150:24;4168:5;4150:24;:::i;:::-;4141:34;:::i;:::-;4123:53;:::i;:::-;4110:66;;4040:142;;;:::o;4188:126::-;4238:9;4271:37;4302:5;4271:37;:::i;:::-;4258:50;;4188:126;;;:::o;4320:153::-;4397:9;4430:37;4461:5;4430:37;:::i;:::-;4417:50;;4320:153;;;:::o;4479:185::-;4593:64;4651:5;4593:64;:::i;:::-;4588:3;4581:77;4479:185;;:::o;4670:276::-;4790:4;4828:2;4817:9;4813:18;4805:26;;4841:98;4936:1;4925:9;4921:17;4912:6;4841:98;:::i;:::-;4670:276;;;;:::o;4952:118::-;5039:24;5057:5;5039:24;:::i;:::-;5034:3;5027:37;4952:118;;:::o;5076:222::-;5169:4;5207:2;5196:9;5192:18;5184:26;;5220:71;5288:1;5277:9;5273:17;5264:6;5220:71;:::i;:::-;5076:222;;;;:::o;5304:619::-;5381:6;5389;5397;5446:2;5434:9;5425:7;5421:23;5417:32;5414:119;;;5452:79;;:::i;:::-;5414:119;5572:1;5597:53;5642:7;5633:6;5622:9;5618:22;5597:53;:::i;:::-;5587:63;;5543:117;5699:2;5725:53;5770:7;5761:6;5750:9;5746:22;5725:53;:::i;:::-;5715:63;;5670:118;5827:2;5853:53;5898:7;5889:6;5878:9;5874:22;5853:53;:::i;:::-;5843:63;;5798:118;5304:619;;;;;:::o;5929:118::-;6016:24;6034:5;6016:24;:::i;:::-;6011:3;6004:37;5929:118;;:::o;6053:222::-;6146:4;6184:2;6173:9;6169:18;6161:26;;6197:71;6265:1;6254:9;6250:17;6241:6;6197:71;:::i;:::-;6053:222;;;;:::o;6281:86::-;6316:7;6356:4;6349:5;6345:16;6334:27;;6281:86;;;:::o;6373:112::-;6456:22;6472:5;6456:22;:::i;:::-;6451:3;6444:35;6373:112;;:::o;6491:214::-;6580:4;6618:2;6607:9;6603:18;6595:26;;6631:67;6695:1;6684:9;6680:17;6671:6;6631:67;:::i;:::-;6491:214;;;;:::o;6711:329::-;6770:6;6819:2;6807:9;6798:7;6794:23;6790:32;6787:119;;;6825:79;;:::i;:::-;6787:119;6945:1;6970:53;7015:7;7006:6;6995:9;6991:22;6970:53;:::i;:::-;6960:63;;6916:117;6711:329;;;;:::o;7046:116::-;7116:21;7131:5;7116:21;:::i;:::-;7109:5;7106:32;7096:60;;7152:1;7149;7142:12;7096:60;7046:116;:::o;7168:133::-;7211:5;7249:6;7236:20;7227:29;;7265:30;7289:5;7265:30;:::i;:::-;7168:133;;;;:::o;7307:468::-;7372:6;7380;7429:2;7417:9;7408:7;7404:23;7400:32;7397:119;;;7435:79;;:::i;:::-;7397:119;7555:1;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7526:117;7682:2;7708:50;7750:7;7741:6;7730:9;7726:22;7708:50;:::i;:::-;7698:60;;7653:115;7307:468;;;;;:::o;7781:329::-;7840:6;7889:2;7877:9;7868:7;7864:23;7860:32;7857:119;;;7895:79;;:::i;:::-;7857:119;8015:1;8040:53;8085:7;8076:6;8065:9;8061:22;8040:53;:::i;:::-;8030:63;;7986:117;7781:329;;;;:::o;8116:474::-;8184:6;8192;8241:2;8229:9;8220:7;8216:23;8212:32;8209:119;;;8247:79;;:::i;:::-;8209:119;8367:1;8392:53;8437:7;8428:6;8417:9;8413:22;8392:53;:::i;:::-;8382:63;;8338:117;8494:2;8520:53;8565:7;8556:6;8545:9;8541:22;8520:53;:::i;:::-;8510:63;;8465:118;8116:474;;;;;:::o;8596:182::-;8736:34;8732:1;8724:6;8720:14;8713:58;8596:182;:::o;8784:366::-;8926:3;8947:67;9011:2;9006:3;8947:67;:::i;:::-;8940:74;;9023:93;9112:3;9023:93;:::i;:::-;9141:2;9136:3;9132:12;9125:19;;8784:366;;;:::o;9156:419::-;9322:4;9360:2;9349:9;9345:18;9337:26;;9409:9;9403:4;9399:20;9395:1;9384:9;9380:17;9373:47;9437:131;9563:4;9437:131;:::i;:::-;9429:139;;9156:419;;;:::o;9581:180::-;9629:77;9626:1;9619:88;9726:4;9723:1;9716:15;9750:4;9747:1;9740:15;9767:305;9807:3;9826:20;9844:1;9826:20;:::i;:::-;9821:25;;9860:20;9878:1;9860:20;:::i;:::-;9855:25;;10014:1;9946:66;9942:74;9939:1;9936:81;9933:107;;;10020:18;;:::i;:::-;9933:107;10064:1;10061;10057:9;10050:16;;9767:305;;;;:::o;10078:179::-;10218:31;10214:1;10206:6;10202:14;10195:55;10078:179;:::o;10263:366::-;10405:3;10426:67;10490:2;10485:3;10426:67;:::i;:::-;10419:74;;10502:93;10591:3;10502:93;:::i;:::-;10620:2;10615:3;10611:12;10604:19;;10263:366;;;:::o;10635:419::-;10801:4;10839:2;10828:9;10824:18;10816:26;;10888:9;10882:4;10878:20;10874:1;10863:9;10859:17;10852:47;10916:131;11042:4;10916:131;:::i;:::-;10908:139;;10635:419;;;:::o;11060:180::-;11108:77;11105:1;11098:88;11205:4;11202:1;11195:15;11229:4;11226:1;11219:15;11246:320;11290:6;11327:1;11321:4;11317:12;11307:22;;11374:1;11368:4;11364:12;11395:18;11385:81;;11451:4;11443:6;11439:17;11429:27;;11385:81;11513:2;11505:6;11502:14;11482:18;11479:38;11476:84;;;11532:18;;:::i;:::-;11476:84;11297:269;11246:320;;;:::o;11572:227::-;11712:34;11708:1;11700:6;11696:14;11689:58;11781:10;11776:2;11768:6;11764:15;11757:35;11572:227;:::o;11805:366::-;11947:3;11968:67;12032:2;12027:3;11968:67;:::i;:::-;11961:74;;12044:93;12133:3;12044:93;:::i;:::-;12162:2;12157:3;12153:12;12146:19;;11805:366;;;:::o;12177:419::-;12343:4;12381:2;12370:9;12366:18;12358:26;;12430:9;12424:4;12420:20;12416:1;12405:9;12401:17;12394:47;12458:131;12584:4;12458:131;:::i;:::-;12450:139;;12177:419;;;:::o;12602:348::-;12642:7;12665:20;12683:1;12665:20;:::i;:::-;12660:25;;12699:20;12717:1;12699:20;:::i;:::-;12694:25;;12887:1;12819:66;12815:74;12812:1;12809:81;12804:1;12797:9;12790:17;12786:105;12783:131;;;12894:18;;:::i;:::-;12783:131;12942:1;12939;12935:9;12924:20;;12602:348;;;;:::o;12956:180::-;13004:77;13001:1;12994:88;13101:4;13098:1;13091:15;13125:4;13122:1;13115:15;13142:185;13182:1;13199:20;13217:1;13199:20;:::i;:::-;13194:25;;13233:20;13251:1;13233:20;:::i;:::-;13228:25;;13272:1;13262:35;;13277:18;;:::i;:::-;13262:35;13319:1;13316;13312:9;13307:14;;13142:185;;;;:::o;13333:220::-;13473:34;13469:1;13461:6;13457:14;13450:58;13542:3;13537:2;13529:6;13525:15;13518:28;13333:220;:::o;13559:366::-;13701:3;13722:67;13786:2;13781:3;13722:67;:::i;:::-;13715:74;;13798:93;13887:3;13798:93;:::i;:::-;13916:2;13911:3;13907:12;13900:19;;13559:366;;;:::o;13931:419::-;14097:4;14135:2;14124:9;14120:18;14112:26;;14184:9;14178:4;14174:20;14170:1;14159:9;14155:17;14148:47;14212:131;14338:4;14212:131;:::i;:::-;14204:139;;13931:419;;;:::o;14356:223::-;14496:34;14492:1;14484:6;14480:14;14473:58;14565:6;14560:2;14552:6;14548:15;14541:31;14356:223;:::o;14585:366::-;14727:3;14748:67;14812:2;14807:3;14748:67;:::i;:::-;14741:74;;14824:93;14913:3;14824:93;:::i;:::-;14942:2;14937:3;14933:12;14926:19;;14585:366;;;:::o;14957:419::-;15123:4;15161:2;15150:9;15146:18;15138:26;;15210:9;15204:4;15200:20;15196:1;15185:9;15181:17;15174:47;15238:131;15364:4;15238:131;:::i;:::-;15230:139;;14957:419;;;:::o;15382:244::-;15522:34;15518:1;15510:6;15506:14;15499:58;15591:27;15586:2;15578:6;15574:15;15567:52;15382:244;:::o;15632:366::-;15774:3;15795:67;15859:2;15854:3;15795:67;:::i;:::-;15788:74;;15871:93;15960:3;15871:93;:::i;:::-;15989:2;15984:3;15980:12;15973:19;;15632:366;;;:::o;16004:419::-;16170:4;16208:2;16197:9;16193:18;16185:26;;16257:9;16251:4;16247:20;16243:1;16232:9;16228:17;16221:47;16285:131;16411:4;16285:131;:::i;:::-;16277:139;;16004:419;;;:::o;16429:224::-;16569:34;16565:1;16557:6;16553:14;16546:58;16638:7;16633:2;16625:6;16621:15;16614:32;16429:224;:::o;16659:366::-;16801:3;16822:67;16886:2;16881:3;16822:67;:::i;:::-;16815:74;;16898:93;16987:3;16898:93;:::i;:::-;17016:2;17011:3;17007:12;17000:19;;16659:366;;;:::o;17031:419::-;17197:4;17235:2;17224:9;17220:18;17212:26;;17284:9;17278:4;17274:20;17270:1;17259:9;17255:17;17248:47;17312:131;17438:4;17312:131;:::i;:::-;17304:139;;17031:419;;;:::o;17456:240::-;17596:34;17592:1;17584:6;17580:14;17573:58;17665:23;17660:2;17652:6;17648:15;17641:48;17456:240;:::o;17702:366::-;17844:3;17865:67;17929:2;17924:3;17865:67;:::i;:::-;17858:74;;17941:93;18030:3;17941:93;:::i;:::-;18059:2;18054:3;18050:12;18043:19;;17702:366;;;:::o;18074:419::-;18240:4;18278:2;18267:9;18263:18;18255:26;;18327:9;18321:4;18317:20;18313:1;18302:9;18298:17;18291:47;18355:131;18481:4;18355:131;:::i;:::-;18347:139;;18074:419;;;:::o;18499:239::-;18639:34;18635:1;18627:6;18623:14;18616:58;18708:22;18703:2;18695:6;18691:15;18684:47;18499:239;:::o;18744:366::-;18886:3;18907:67;18971:2;18966:3;18907:67;:::i;:::-;18900:74;;18983:93;19072:3;18983:93;:::i;:::-;19101:2;19096:3;19092:12;19085:19;;18744:366;;;:::o;19116:419::-;19282:4;19320:2;19309:9;19305:18;19297:26;;19369:9;19363:4;19359:20;19355:1;19344:9;19340:17;19333:47;19397:131;19523:4;19397:131;:::i;:::-;19389:139;;19116:419;;;:::o;19541:225::-;19681:34;19677:1;19669:6;19665:14;19658:58;19750:8;19745:2;19737:6;19733:15;19726:33;19541:225;:::o;19772:366::-;19914:3;19935:67;19999:2;19994:3;19935:67;:::i;:::-;19928:74;;20011:93;20100:3;20011:93;:::i;:::-;20129:2;20124:3;20120:12;20113:19;;19772:366;;;:::o;20144:419::-;20310:4;20348:2;20337:9;20333:18;20325:26;;20397:9;20391:4;20387:20;20383:1;20372:9;20368:17;20361:47;20425:131;20551:4;20425:131;:::i;:::-;20417:139;;20144:419;;;:::o;20569:223::-;20709:34;20705:1;20697:6;20693:14;20686:58;20778:6;20773:2;20765:6;20761:15;20754:31;20569:223;:::o;20798:366::-;20940:3;20961:67;21025:2;21020:3;20961:67;:::i;:::-;20954:74;;21037:93;21126:3;21037:93;:::i;:::-;21155:2;21150:3;21146:12;21139:19;;20798:366;;;:::o;21170:419::-;21336:4;21374:2;21363:9;21359:18;21351:26;;21423:9;21417:4;21413:20;21409:1;21398:9;21394:17;21387:47;21451:131;21577:4;21451:131;:::i;:::-;21443:139;;21170:419;;;:::o;21595:221::-;21735:34;21731:1;21723:6;21719:14;21712:58;21804:4;21799:2;21791:6;21787:15;21780:29;21595:221;:::o;21822:366::-;21964:3;21985:67;22049:2;22044:3;21985:67;:::i;:::-;21978:74;;22061:93;22150:3;22061:93;:::i;:::-;22179:2;22174:3;22170:12;22163:19;;21822:366;;;:::o;22194:419::-;22360:4;22398:2;22387:9;22383:18;22375:26;;22447:9;22441:4;22437:20;22433:1;22422:9;22418:17;22411:47;22475:131;22601:4;22475:131;:::i;:::-;22467:139;;22194:419;;;:::o;22619:224::-;22759:34;22755:1;22747:6;22743:14;22736:58;22828:7;22823:2;22815:6;22811:15;22804:32;22619:224;:::o;22849:366::-;22991:3;23012:67;23076:2;23071:3;23012:67;:::i;:::-;23005:74;;23088:93;23177:3;23088:93;:::i;:::-;23206:2;23201:3;23197:12;23190:19;;22849:366;;;:::o;23221:419::-;23387:4;23425:2;23414:9;23410:18;23402:26;;23474:9;23468:4;23464:20;23460:1;23449:9;23445:17;23438:47;23502:131;23628:4;23502:131;:::i;:::-;23494:139;;23221:419;;;:::o;23646:222::-;23786:34;23782:1;23774:6;23770:14;23763:58;23855:5;23850:2;23842:6;23838:15;23831:30;23646:222;:::o;23874:366::-;24016:3;24037:67;24101:2;24096:3;24037:67;:::i;:::-;24030:74;;24113:93;24202:3;24113:93;:::i;:::-;24231:2;24226:3;24222:12;24215:19;;23874:366;;;:::o;24246:419::-;24412:4;24450:2;24439:9;24435:18;24427:26;;24499:9;24493:4;24489:20;24485:1;24474:9;24470:17;24463:47;24527:131;24653:4;24527:131;:::i;:::-;24519:139;;24246:419;;;:::o;24671:172::-;24811:24;24807:1;24799:6;24795:14;24788:48;24671:172;:::o;24849:366::-;24991:3;25012:67;25076:2;25071:3;25012:67;:::i;:::-;25005:74;;25088:93;25177:3;25088:93;:::i;:::-;25206:2;25201:3;25197:12;25190:19;;24849:366;;;:::o;25221:419::-;25387:4;25425:2;25414:9;25410:18;25402:26;;25474:9;25468:4;25464:20;25460:1;25449:9;25445:17;25438:47;25502:131;25628:4;25502:131;:::i;:::-;25494:139;;25221:419;;;:::o;25646:169::-;25786:21;25782:1;25774:6;25770:14;25763:45;25646:169;:::o;25821:366::-;25963:3;25984:67;26048:2;26043:3;25984:67;:::i;:::-;25977:74;;26060:93;26149:3;26060:93;:::i;:::-;26178:2;26173:3;26169:12;26162:19;;25821:366;;;:::o;26193:419::-;26359:4;26397:2;26386:9;26382:18;26374:26;;26446:9;26440:4;26436:20;26432:1;26421:9;26417:17;26410:47;26474:131;26600:4;26474:131;:::i;:::-;26466:139;;26193:419;;;:::o;26618:241::-;26758:34;26754:1;26746:6;26742:14;26735:58;26827:24;26822:2;26814:6;26810:15;26803:49;26618:241;:::o;26865:366::-;27007:3;27028:67;27092:2;27087:3;27028:67;:::i;:::-;27021:74;;27104:93;27193:3;27104:93;:::i;:::-;27222:2;27217:3;27213:12;27206:19;;26865:366;;;:::o;27237:419::-;27403:4;27441:2;27430:9;27426:18;27418:26;;27490:9;27484:4;27480:20;27476:1;27465:9;27461:17;27454:47;27518:131;27644:4;27518:131;:::i;:::-;27510:139;;27237:419;;;:::o;27662:191::-;27702:4;27722:20;27740:1;27722:20;:::i;:::-;27717:25;;27756:20;27774:1;27756:20;:::i;:::-;27751:25;;27795:1;27792;27789:8;27786:34;;;27800:18;;:::i;:::-;27786:34;27845:1;27842;27838:9;27830:17;;27662:191;;;;:::o;27859:225::-;27999:34;27995:1;27987:6;27983:14;27976:58;28068:8;28063:2;28055:6;28051:15;28044:33;27859:225;:::o;28090:366::-;28232:3;28253:67;28317:2;28312:3;28253:67;:::i;:::-;28246:74;;28329:93;28418:3;28329:93;:::i;:::-;28447:2;28442:3;28438:12;28431:19;;28090:366;;;:::o;28462:419::-;28628:4;28666:2;28655:9;28651:18;28643:26;;28715:9;28709:4;28705:20;28701:1;28690:9;28686:17;28679:47;28743:131;28869:4;28743:131;:::i;:::-;28735:139;;28462:419;;;:::o;28887:442::-;29036:4;29074:2;29063:9;29059:18;29051:26;;29087:71;29155:1;29144:9;29140:17;29131:6;29087:71;:::i;:::-;29168:72;29236:2;29225:9;29221:18;29212:6;29168:72;:::i;:::-;29250;29318:2;29307:9;29303:18;29294:6;29250:72;:::i;:::-;28887:442;;;;;;:::o;29335:147::-;29436:11;29473:3;29458:18;;29335:147;;;;:::o;29488:114::-;;:::o;29608:398::-;29767:3;29788:83;29869:1;29864:3;29788:83;:::i;:::-;29781:90;;29880:93;29969:3;29880:93;:::i;:::-;29998:1;29993:3;29989:11;29982:18;;29608:398;;;:::o;30012:379::-;30196:3;30218:147;30361:3;30218:147;:::i;:::-;30211:154;;30382:3;30375:10;;30012:379;;;:::o;30397:180::-;30445:77;30442:1;30435:88;30542:4;30539:1;30532:15;30566:4;30563:1;30556:15;30583:180;30631:77;30628:1;30621:88;30728:4;30725:1;30718:15;30752:4;30749:1;30742:15;30769:143;30826:5;30857:6;30851:13;30842:22;;30873:33;30900:5;30873:33;:::i;:::-;30769:143;;;;:::o;30918:351::-;30988:6;31037:2;31025:9;31016:7;31012:23;31008:32;31005:119;;;31043:79;;:::i;:::-;31005:119;31163:1;31188:64;31244:7;31235:6;31224:9;31220:22;31188:64;:::i;:::-;31178:74;;31134:128;30918:351;;;;:::o;31275:85::-;31320:7;31349:5;31338:16;;31275:85;;;:::o;31366:158::-;31424:9;31457:61;31475:42;31484:32;31510:5;31484:32;:::i;:::-;31475:42;:::i;:::-;31457:61;:::i;:::-;31444:74;;31366:158;;;:::o;31530:147::-;31625:45;31664:5;31625:45;:::i;:::-;31620:3;31613:58;31530:147;;:::o;31683:114::-;31750:6;31784:5;31778:12;31768:22;;31683:114;;;:::o;31803:184::-;31902:11;31936:6;31931:3;31924:19;31976:4;31971:3;31967:14;31952:29;;31803:184;;;;:::o;31993:132::-;32060:4;32083:3;32075:11;;32113:4;32108:3;32104:14;32096:22;;31993:132;;;:::o;32131:108::-;32208:24;32226:5;32208:24;:::i;:::-;32203:3;32196:37;32131:108;;:::o;32245:179::-;32314:10;32335:46;32377:3;32369:6;32335:46;:::i;:::-;32413:4;32408:3;32404:14;32390:28;;32245:179;;;;:::o;32430:113::-;32500:4;32532;32527:3;32523:14;32515:22;;32430:113;;;:::o;32579:732::-;32698:3;32727:54;32775:5;32727:54;:::i;:::-;32797:86;32876:6;32871:3;32797:86;:::i;:::-;32790:93;;32907:56;32957:5;32907:56;:::i;:::-;32986:7;33017:1;33002:284;33027:6;33024:1;33021:13;33002:284;;;33103:6;33097:13;33130:63;33189:3;33174:13;33130:63;:::i;:::-;33123:70;;33216:60;33269:6;33216:60;:::i;:::-;33206:70;;33062:224;33049:1;33046;33042:9;33037:14;;33002:284;;;33006:14;33302:3;33295:10;;32703:608;;;32579:732;;;;:::o;33317:831::-;33580:4;33618:3;33607:9;33603:19;33595:27;;33632:71;33700:1;33689:9;33685:17;33676:6;33632:71;:::i;:::-;33713:80;33789:2;33778:9;33774:18;33765:6;33713:80;:::i;:::-;33840:9;33834:4;33830:20;33825:2;33814:9;33810:18;33803:48;33868:108;33971:4;33962:6;33868:108;:::i;:::-;33860:116;;33986:72;34054:2;34043:9;34039:18;34030:6;33986:72;:::i;:::-;34068:73;34136:3;34125:9;34121:19;34112:6;34068:73;:::i;:::-;33317:831;;;;;;;;:::o;34154:807::-;34403:4;34441:3;34430:9;34426:19;34418:27;;34455:71;34523:1;34512:9;34508:17;34499:6;34455:71;:::i;:::-;34536:72;34604:2;34593:9;34589:18;34580:6;34536:72;:::i;:::-;34618:80;34694:2;34683:9;34679:18;34670:6;34618:80;:::i;:::-;34708;34784:2;34773:9;34769:18;34760:6;34708:80;:::i;:::-;34798:73;34866:3;34855:9;34851:19;34842:6;34798:73;:::i;:::-;34881;34949:3;34938:9;34934:19;34925:6;34881:73;:::i;:::-;34154:807;;;;;;;;;:::o;34967:143::-;35024:5;35055:6;35049:13;35040:22;;35071:33;35098:5;35071:33;:::i;:::-;34967:143;;;;:::o;35116:663::-;35204:6;35212;35220;35269:2;35257:9;35248:7;35244:23;35240:32;35237:119;;;35275:79;;:::i;:::-;35237:119;35395:1;35420:64;35476:7;35467:6;35456:9;35452:22;35420:64;:::i;:::-;35410:74;;35366:128;35533:2;35559:64;35615:7;35606:6;35595:9;35591:22;35559:64;:::i;:::-;35549:74;;35504:129;35672:2;35698:64;35754:7;35745:6;35734:9;35730:22;35698:64;:::i;:::-;35688:74;;35643:129;35116:663;;;;;:::o
Swarm Source
ipfs://7b6f1a79dd1790cb78e8975ecaa11d1ecde88b52a400868363803bedd7d74717
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.