More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 98 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 14578822 | 1003 days ago | IN | 0 ETH | 0.00190084 | ||||
Approve | 14577890 | 1004 days ago | IN | 0 ETH | 0.00176546 | ||||
Approve | 14577890 | 1004 days ago | IN | 0 ETH | 0.00305054 | ||||
Approve | 14577818 | 1004 days ago | IN | 0 ETH | 0.00127272 | ||||
Approve | 14577818 | 1004 days ago | IN | 0 ETH | 0.00127272 | ||||
Approve | 14577818 | 1004 days ago | IN | 0 ETH | 0.00219913 | ||||
Approve | 14576677 | 1004 days ago | IN | 0 ETH | 0.0012043 | ||||
Approve | 14575902 | 1004 days ago | IN | 0 ETH | 0.00137625 | ||||
Approve | 14574710 | 1004 days ago | IN | 0 ETH | 0.00137413 | ||||
Approve | 14574629 | 1004 days ago | IN | 0 ETH | 0.00422232 | ||||
Approve | 14574629 | 1004 days ago | IN | 0 ETH | 0.00422232 | ||||
Approve | 14574309 | 1004 days ago | IN | 0 ETH | 0.00231874 | ||||
Approve | 14574281 | 1004 days ago | IN | 0 ETH | 0.00175507 | ||||
Approve | 14574130 | 1004 days ago | IN | 0 ETH | 0.00291824 | ||||
Transfer | 14574077 | 1004 days ago | IN | 0 ETH | 0.00398207 | ||||
Approve | 14573918 | 1004 days ago | IN | 0 ETH | 0.00350877 | ||||
Approve | 14573891 | 1004 days ago | IN | 0 ETH | 0.00285932 | ||||
Approve | 14573891 | 1004 days ago | IN | 0 ETH | 0.0015105 | ||||
Approve | 14573891 | 1004 days ago | IN | 0 ETH | 0.00286972 | ||||
Approve | 14573891 | 1004 days ago | IN | 0 ETH | 0.00288294 | ||||
Approve | 14573888 | 1004 days ago | IN | 0 ETH | 0.00328554 | ||||
Approve | 14573887 | 1004 days ago | IN | 0 ETH | 0.00312068 | ||||
Approve | 14573886 | 1004 days ago | IN | 0 ETH | 0.00298622 | ||||
Approve | 14573885 | 1004 days ago | IN | 0 ETH | 0.00295716 | ||||
Approve | 14573883 | 1004 days ago | IN | 0 ETH | 0.00151806 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
14603203 | 1000 days ago | 0.0017031 ETH | ||||
14603203 | 1000 days ago | 0.0017031 ETH | ||||
14603203 | 1000 days ago | 0.0034062 ETH | ||||
14581236 | 1003 days ago | 0.00247944 ETH | ||||
14581236 | 1003 days ago | 0.00247944 ETH | ||||
14581236 | 1003 days ago | 0.00495888 ETH | ||||
14579843 | 1003 days ago | 0.00274486 ETH | ||||
14579843 | 1003 days ago | 0.00274486 ETH | ||||
14579843 | 1003 days ago | 0.00548973 ETH | ||||
14577850 | 1004 days ago | 0.00114027 ETH | ||||
14577850 | 1004 days ago | 0.00114027 ETH | ||||
14577850 | 1004 days ago | 0.00228054 ETH | ||||
14576813 | 1004 days ago | 0.00216247 ETH | ||||
14576813 | 1004 days ago | 0.00216247 ETH | ||||
14576813 | 1004 days ago | 0.00432495 ETH | ||||
14575903 | 1004 days ago | 0.00295143 ETH | ||||
14575903 | 1004 days ago | 0.00295143 ETH | ||||
14575903 | 1004 days ago | 0.00590287 ETH | ||||
14575405 | 1004 days ago | 0.0046327 ETH | ||||
14575405 | 1004 days ago | 0.0046327 ETH | ||||
14575405 | 1004 days ago | 0.00926541 ETH | ||||
14575368 | 1004 days ago | 0.00644696 ETH | ||||
14575368 | 1004 days ago | 0.00644696 ETH | ||||
14575368 | 1004 days ago | 0.01289393 ETH | ||||
14574723 | 1004 days ago | 0.00317907 ETH |
Loading...
Loading
Contract Name:
DARE
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-12 */ /* SPDX-License-Identifier: MIT */ /* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░████▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██▓▓██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██▒▒██░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░████░░░░░░░░░░░░░░░░██▓▓██░░░░░░░░░░░░░░░░████░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░████▓▓████░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░████████░░░░░░░░░░████▒▒██▓▓░░░░░░░░░░████████░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░██▒▒████░░░░░░░░████▒▒████░░░░░░░░████▒▒██░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░██▓▓▓▓████░░░░░░████▓▓████░░░░░░████▒▒████░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░██████▒▒████░░░░████▓▓████░░░░████▓▓██████░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░████▒▒██████░░████▓▓████░░██████▒▒████░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░██████▒▒████░░████▓▓████░░████▓▓██████░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓████▓▓████░░██▓▓██░░████▒▒██▓▓██░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████▒▒████████▓▓████████▒▒██████░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████▓▓██████▓▓██████▒▒██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░████████████░░░░██████▒▒████▓▓████▓▓██████░░░░████████████░░░░░░░░░░░░░░ ░░░░░░░░▒▒░░░░░░░░████▓▓▓▓██████░░██████▓▓██▓▓██▓▓██████░░██████▓▓▓▓████░░░░░░░░░░▒▒░░░░ ░░░░░░░░░░░░░░░░░░░░██████▒▒▒▒████████████▒▒ ▒▒████████████▒▒▒▒██████░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░████████▓▓▒▒▓▓▓▓▒▒▒▒ ▒▒▓▓▓▓▒▒▒▒▒▒████████░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████████████▒▒ ▒▒██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░████▓▓██▒▒██▒▒████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓██▒▒██████████▒▒████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░████▓▓████░░██░░████▓▓████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████████░░░░██░░░░██████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░▓▓░░░░░░▓▓░░░░░░▒▒░░▓▓▒▒▓▓░░▓▓░░▒▒▓▓░░▒▒██▒▒▓▓▒▒▓▓░░░░░░░░░░▒▒▓▓░░░░░░░░░░░░▓▓░░░░░░ */ pragma solidity 0.8.11; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function factory() external view returns (address); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } 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) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, 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 _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } 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; } } } 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 { _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 IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract DARE is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; mapping (address => bool) public isBot; bool private _swapping; uint256 private _launchTime; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); constructor() ERC20("DARE", "DARE") { 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 _buyDevFee = 5; uint256 _sellMarketingFee = 5; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 5; uint256 totalSupply = 1 * 1e9 * 1e18; maxTransactionAmount = totalSupply * 2 / 100; // 2% maxTransactionAmountTxn maxWallet = totalSupply * 3 / 100; // 3% maxWallet swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet // Set Fees buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; // Set Fee Wallet marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; _launchTime = block.timestamp.add(1); } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees 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; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * 1e18; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * 1e18; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } // Variable Block - once enabled, can never be turned off function enableTrading(uint256 Bblock) external onlyOwner { tradingActive = true; _launchTime = block.timestamp.add(Bblock); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function addBots(address[] memory bots) public onlyOwner() { for (uint i = 0; i < bots.length; i++) { if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) { isBot[bots[i]] = true; } } } function removeBots(address[] memory bots) public onlyOwner() { for (uint i = 0; i < bots.length; i++) { isBot[bots[i]] = false; } } 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"); require(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap."); if (amount == 0) { super._transfer(from, to, 0); return; } if (block.timestamp < _launchTime) isBot[to] = true; if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_swapping ) { if (!tradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } // On buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } // On 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 && !_swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { _swapping = true; swapBack(); _swapping = false; } bool takeFee = !_swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false; uint256 fees = 0; // Only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // On sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function _swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens 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 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"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":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","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":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","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
60c06040526001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600481526020017f44415245000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f44415245000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000a50565b5080600490805190602001906200010092919062000a50565b5050506200012362000117620005a660201b60201c565b620005ae60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200014f8160016200067460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000b6a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000283919062000b6a565b6040518363ffffffff1660e01b8152600401620002a292919062000bad565b6020604051808303816000875af1158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e8919062000b6a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033060a05160016200067460201b60201c565b6200034560a05160016200075e60201b60201c565b600060059050600080600590506000600590506000806005905060006b033b2e3c9fd0803ce80000009050606460028262000381919062000c13565b6200038d919062000ca3565b600b819055506064600382620003a4919062000c13565b620003b0919062000ca3565b600d81905550612710600582620003c8919062000c13565b620003d4919062000ca3565b600c8190555086601281905550856013819055508460148190555060145460135460125462000404919062000cdb565b62000410919062000cdb565b60118190555083601681905550826017819055508160188190555060185460175460165462000440919062000cdb565b6200044c919062000cdb565b60158190555062000462620007b960201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004b2620007b960201b60201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200051462000506620007b960201b60201c565b6001620007e360201b60201c565b62000527306001620007e360201b60201c565b6200053c61dead6001620007e360201b60201c565b6200055e62000550620007b960201b60201c565b60016200067460201b60201c565b620005713060016200067460201b60201c565b6200058661dead60016200067460201b60201c565b620005983382620008cd60201b60201c565b505050505050505062000ec0565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000684620005a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006aa620007b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000703576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006fa9062000d99565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007f3620005a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000819620007b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008699062000d99565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009379062000e0b565b60405180910390fd5b620009546000838362000a4660201b60201c565b806002600082825462000968919062000cdb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009bf919062000cdb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a26919062000e3e565b60405180910390a362000a426000838362000a4b60201b60201c565b5050565b505050565b505050565b82805462000a5e9062000e8a565b90600052602060002090601f01602090048101928262000a82576000855562000ace565b82601f1062000a9d57805160ff191683800117855562000ace565b8280016001018555821562000ace579182015b8281111562000acd57825182559160200191906001019062000ab0565b5b50905062000add919062000ae1565b5090565b5b8082111562000afc57600081600090555060010162000ae2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b328262000b05565b9050919050565b62000b448162000b25565b811462000b5057600080fd5b50565b60008151905062000b648162000b39565b92915050565b60006020828403121562000b835762000b8262000b00565b5b600062000b938482850162000b53565b91505092915050565b62000ba78162000b25565b82525050565b600060408201905062000bc4600083018562000b9c565b62000bd3602083018462000b9c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c208262000bda565b915062000c2d8362000bda565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c695762000c6862000be4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cb08262000bda565b915062000cbd8362000bda565b92508262000cd05762000ccf62000c74565b5b828204905092915050565b600062000ce88262000bda565b915062000cf58362000bda565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d2d5762000d2c62000be4565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d8160208362000d38565b915062000d8e8262000d49565b602082019050919050565b6000602082019050818103600083015262000db48162000d72565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000df3601f8362000d38565b915062000e008262000dbb565b602082019050919050565b6000602082019050818103600083015262000e268162000de4565b9050919050565b62000e388162000bda565b82525050565b600060208201905062000e55600083018462000e2d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ea357607f821691505b6020821081141562000eba5762000eb962000e5b565b5b50919050565b60805160a05161560e62000f2c600039600081816111f201528181611986015281816121880152612ba9015260008181610d79015281816121f901528181612b5101528181613bfd01528181613cde01528181613d0501528181613da10152613dc8015261560e6000f3fe60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c17b5b8c116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610bfd578063f2fde38b14610c28578063f637434214610c51578063f8b45b0514610c7c57610325565b8063dd62ed3e14610b6a578063e2f4560514610ba7578063e884f26014610bd257610325565b8063c8c8ebe4116100d1578063c8c8ebe414610aae578063d257b34f14610ad9578063d34628cc14610b16578063d85ba06314610b3f57610325565b8063c17b5b8c14610a31578063c18bc19514610a5a578063c876d0b914610a8357610325565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe314610977578063b62496f5146109a0578063bbc0c742146109dd578063c024666814610a0857610325565b8063a0d82dc5146108d2578063a457c2d7146108fd578063a9059cbb1461093a57610325565b80638da5cb5b146107d257806392136913146107fd57806395d89b41146108285780639a7a23d6146108535780639c3b4fdc1461087c5780639fccce32146108a757610325565b806349bd5a5e1161026a578063715018a6116102235780637bce5a04116101fd5780637bce5a041461073e5780638095d5641461076957806382aa7c68146107925780638a8c523c146107bb57610325565b8063715018a6146106d3578063751039fc146106ea5780637571336a1461071557610325565b806349bd5a5e146105af5780634a62bb65146105da5780634fbee193146106055780636a486a8e146106425780636c3bbfd71461066d57806370a082311461069657610325565b80631a8145bb116102d757806323b872dd116102b157806323b872dd146104cd578063313ce5671461050a57806339509351146105355780633bbac5791461057257610325565b80631a8145bb1461044e5780631f3fed8f14610479578063203e727e146104a457610325565b806306fdde031461032a578063095ea7b31461035557806310d5de53146103925780631694505e146103cf57806318160ddd146103fa5780631816467f1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610ca7565b60405161034c9190613f15565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190613fdf565b610d39565b604051610389919061403a565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190614055565b610d57565b6040516103c6919061403a565b60405180910390f35b3480156103db57600080fd5b506103e4610d77565b6040516103f191906140e1565b60405180910390f35b34801561040657600080fd5b5061040f610d9b565b60405161041c919061410b565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190614055565b610da5565b005b34801561045a57600080fd5b50610463610ee1565b604051610470919061410b565b60405180910390f35b34801561048557600080fd5b5061048e610ee7565b60405161049b919061410b565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190614126565b610eed565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190614153565b610ffc565b604051610501919061403a565b60405180910390f35b34801561051657600080fd5b5061051f61111b565b60405161052c91906141c2565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190613fdf565b611124565b604051610569919061403a565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190614055565b6111d0565b6040516105a6919061403a565b60405180910390f35b3480156105bb57600080fd5b506105c46111f0565b6040516105d191906141ec565b60405180910390f35b3480156105e657600080fd5b506105ef611214565b6040516105fc919061403a565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190614055565b611227565b604051610639919061403a565b60405180910390f35b34801561064e57600080fd5b5061065761127d565b604051610664919061410b565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f919061434f565b611283565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190614055565b611394565b6040516106ca919061410b565b60405180910390f35b3480156106df57600080fd5b506106e86113dc565b005b3480156106f657600080fd5b506106ff611464565b60405161070c919061403a565b60405180910390f35b34801561072157600080fd5b5061073c600480360381019061073791906143c4565b611504565b005b34801561074a57600080fd5b506107536115db565b604051610760919061410b565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614404565b6115e1565b005b34801561079e57600080fd5b506107b960048036038101906107b49190614126565b6116e0565b005b3480156107c757600080fd5b506107d0611793565b005b3480156107de57600080fd5b506107e7611846565b6040516107f491906141ec565b60405180910390f35b34801561080957600080fd5b50610812611870565b60405161081f919061410b565b60405180910390f35b34801561083457600080fd5b5061083d611876565b60405161084a9190613f15565b60405180910390f35b34801561085f57600080fd5b5061087a600480360381019061087591906143c4565b611908565b005b34801561088857600080fd5b50610891611a21565b60405161089e919061410b565b60405180910390f35b3480156108b357600080fd5b506108bc611a27565b6040516108c9919061410b565b60405180910390f35b3480156108de57600080fd5b506108e7611a2d565b6040516108f4919061410b565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f9190613fdf565b611a33565b604051610931919061403a565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c9190613fdf565b611b1e565b60405161096e919061403a565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614055565b611b3c565b005b3480156109ac57600080fd5b506109c760048036038101906109c29190614055565b611c78565b6040516109d4919061403a565b60405180910390f35b3480156109e957600080fd5b506109f2611c98565b6040516109ff919061403a565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906143c4565b611cab565b005b348015610a3d57600080fd5b50610a586004803603810190610a539190614404565b611d82565b005b348015610a6657600080fd5b50610a816004803603810190610a7c9190614126565b611e81565b005b348015610a8f57600080fd5b50610a98611f90565b604051610aa5919061403a565b60405180910390f35b348015610aba57600080fd5b50610ac3611fa3565b604051610ad0919061410b565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190614126565b611fa9565b604051610b0d919061403a565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b38919061434f565b6120fe565b005b348015610b4b57600080fd5b50610b546122f1565b604051610b61919061410b565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614457565b6122f7565b604051610b9e919061410b565b60405180910390f35b348015610bb357600080fd5b50610bbc61237e565b604051610bc9919061410b565b60405180910390f35b348015610bde57600080fd5b50610be7612384565b604051610bf4919061403a565b60405180910390f35b348015610c0957600080fd5b50610c12612424565b604051610c1f919061410b565b60405180910390f35b348015610c3457600080fd5b50610c4f6004803603810190610c4a9190614055565b61242a565b005b348015610c5d57600080fd5b50610c66612522565b604051610c73919061410b565b60405180910390f35b348015610c8857600080fd5b50610c91612528565b604051610c9e919061410b565b60405180910390f35b606060038054610cb6906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce2906144c6565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b5050505050905090565b6000610d4d610d4661252e565b8484612536565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610dad61252e565b73ffffffffffffffffffffffffffffffffffffffff16610dcb611846565b73ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890614544565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b60195481565b610ef561252e565b73ffffffffffffffffffffffffffffffffffffffff16610f13611846565b73ffffffffffffffffffffffffffffffffffffffff1614610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090614544565b60405180910390fd5b670de0b6b3a76400006103e86001610f7f610d9b565b610f899190614593565b610f93919061461c565b610f9d919061461c565b811015610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd6906146bf565b60405180910390fd5b670de0b6b3a764000081610ff39190614593565b600b8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061104861252e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461110457828110156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690614751565b60405180910390fd5b611103856110fb61252e565b858403612536565b5b61110f858585612701565b60019150509392505050565b60006012905090565b60006111c661113161252e565b84846001600061113f61252e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111c19190614771565b612536565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b61128b61252e565b73ffffffffffffffffffffffffffffffffffffffff166112a9611846565b73ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690614544565b60405180910390fd5b60005b815181101561139057600060066000848481518110611324576113236147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611388906147f6565b915050611302565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113e461252e565b73ffffffffffffffffffffffffffffffffffffffff16611402611846565b73ffffffffffffffffffffffffffffffffffffffff1614611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90614544565b60405180910390fd5b6114626000613473565b565b600061146e61252e565b73ffffffffffffffffffffffffffffffffffffffff1661148c611846565b73ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d990614544565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b61150c61252e565b73ffffffffffffffffffffffffffffffffffffffff1661152a611846565b73ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790614544565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6115e961252e565b73ffffffffffffffffffffffffffffffffffffffff16611607611846565b73ffffffffffffffffffffffffffffffffffffffff161461165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490614544565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546116859190614771565b61168f9190614771565b601181905550601460115411156116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d29061488b565b60405180910390fd5b505050565b6116e861252e565b73ffffffffffffffffffffffffffffffffffffffff16611706611846565b73ffffffffffffffffffffffffffffffffffffffff161461175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390614544565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061178a814261353990919063ffffffff16565b60088190555050565b61179b61252e565b73ffffffffffffffffffffffffffffffffffffffff166117b9611846565b73ffffffffffffffffffffffffffffffffffffffff161461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690614544565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061183e60014261353990919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b606060048054611885906144c6565b80601f01602080910402602001604051908101604052809291908181526020018280546118b1906144c6565b80156118fe5780601f106118d3576101008083540402835291602001916118fe565b820191906000526020600020905b8154815290600101906020018083116118e157829003601f168201915b5050505050905090565b61191061252e565b73ffffffffffffffffffffffffffffffffffffffff1661192e611846565b73ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90614544565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061491d565b60405180910390fd5b611a1d828261354f565b5050565b60145481565b601b5481565b60185481565b60008060016000611a4261252e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af6906149af565b60405180910390fd5b611b13611b0a61252e565b85858403612536565b600191505092915050565b6000611b32611b2b61252e565b8484612701565b6001905092915050565b611b4461252e565b73ffffffffffffffffffffffffffffffffffffffff16611b62611846565b73ffffffffffffffffffffffffffffffffffffffff1614611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614544565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b611cb361252e565b73ffffffffffffffffffffffffffffffffffffffff16611cd1611846565b73ffffffffffffffffffffffffffffffffffffffff1614611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90614544565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d8a61252e565b73ffffffffffffffffffffffffffffffffffffffff16611da8611846565b73ffffffffffffffffffffffffffffffffffffffff1614611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590614544565b60405180910390fd5b826016819055508160178190555080601881905550601854601754601654611e269190614771565b611e309190614771565b60158190555060196015541115611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7390614a1b565b60405180910390fd5b505050565b611e8961252e565b73ffffffffffffffffffffffffffffffffffffffff16611ea7611846565b73ffffffffffffffffffffffffffffffffffffffff1614611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef490614544565b60405180910390fd5b670de0b6b3a76400006103e86005611f13610d9b565b611f1d9190614593565b611f27919061461c565b611f31919061461c565b811015611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90614aad565b60405180910390fd5b670de0b6b3a764000081611f879190614593565b600d8190555050565b601060009054906101000a900460ff1681565b600b5481565b6000611fb361252e565b73ffffffffffffffffffffffffffffffffffffffff16611fd1611846565b73ffffffffffffffffffffffffffffffffffffffff1614612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614544565b60405180910390fd5b620186a06001612035610d9b565b61203f9190614593565b612049919061461c565b82101561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290614b3f565b60405180910390fd5b6103e86005612098610d9b565b6120a29190614593565b6120ac919061461c565b8211156120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590614bd1565b60405180910390fd5b81600c8190555060019050919050565b61210661252e565b73ffffffffffffffffffffffffffffffffffffffff16612124611846565b73ffffffffffffffffffffffffffffffffffffffff161461217a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217190614544565b60405180910390fd5b60005b81518110156122ed577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168282815181106121d0576121cf6147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561226257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110612241576122406147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156122da576001600660008484815181106122805761227f6147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806122e5906147f6565b91505061217d565b5050565b60115481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061238e61252e565b73ffffffffffffffffffffffffffffffffffffffff166123ac611846565b73ffffffffffffffffffffffffffffffffffffffff1614612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990614544565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b60135481565b61243261252e565b73ffffffffffffffffffffffffffffffffffffffff16612450611846565b73ffffffffffffffffffffffffffffffffffffffff16146124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614544565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d90614c63565b60405180910390fd5b61251f81613473565b50565b60175481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259d90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260d90614d87565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126f4919061410b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276890614e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614eab565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286590614f63565b60405180910390fd5b600081141561288857612883838360006135aa565b61346e565b6008544210156128eb576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1615612fae57612908611846565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129765750612946611846565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129af5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a025750600760009054906101000a900460ff16155b15612fad57600e60019054906101000a900460ff16612afc57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612abc5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614fcf565b60405180910390fd5b5b601060009054906101000a900460ff1615612cc457612b19611846565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ba057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bf857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cc35743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7590615087565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d675750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e0e57600b54811115612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da890615119565b60405180910390fd5b600d54612dbd83611394565b82612dc89190614771565b1115612e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0090615185565b60405180910390fd5b612fac565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb15750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0057600b54811115612efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef290615217565b60405180910390fd5b612fab565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612faa57600d54612f5d83611394565b82612f689190614771565b1115612fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa090615185565b60405180910390fd5b5b5b5b5b5b6000612fb930611394565b90506000600c548210159050808015612fdf5750600760009054906101000a900460ff16155b80156130355750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561308b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613125576001600760006101000a81548160ff02191690831515021790555061310961382b565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131db5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131e557600090505b6000811561345e57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561324857506000601554115b1561331557613275606461326760155488613b1290919063ffffffff16565b613b2890919063ffffffff16565b9050601554601754826132889190614593565b613292919061461c565b601a60008282546132a39190614771565b92505081905550601554601854826132bb9190614593565b6132c5919061461c565b601b60008282546132d69190614771565b92505081905550601554601654826132ee9190614593565b6132f8919061461c565b601960008282546133099190614771565b9250508190555061343a565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561337057506000601154115b156134395761339d606461338f60115488613b1290919063ffffffff16565b613b2890919063ffffffff16565b9050601154601354826133b09190614593565b6133ba919061461c565b601a60008282546133cb9190614771565b92505081905550601154601454826133e39190614593565b6133ed919061461c565b601b60008282546133fe9190614771565b92505081905550601154601254826134169190614593565b613420919061461c565b601960008282546134319190614771565b925050819055505b5b600081111561344f5761344e8730836135aa565b5b808561345b9190615237565b94505b6134698787876135aa565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836135479190614771565b905092915050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561361a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361190614e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561368a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368190614eab565b60405180910390fd5b613695838383613b3e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561371b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613712906152dd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137ae9190614771565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613812919061410b565b60405180910390a3613825848484613b43565b50505050565b600061383630611394565b90506000601b54601954601a5461384d9190614771565b6138579190614771565b90506000808314806138695750600082145b1561387657505050613b10565b6014600c546138859190614593565b83111561389e576014600c5461389b9190614593565b92505b6000600283601a54866138b19190614593565b6138bb919061461c565b6138c5919061461c565b905060006138dc8286613b4890919063ffffffff16565b905060004790506138ec82613b5e565b60006139018247613b4890919063ffffffff16565b9050600061392c8761391e60195485613b1290919063ffffffff16565b613b2890919063ffffffff16565b9050600061395788613949601b5486613b1290919063ffffffff16565b613b2890919063ffffffff16565b905060008183856139689190615237565b6139729190615237565b90506000601a8190555060006019819055506000601b81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516139d29061532e565b60006040518083038185875af1925050503d8060008114613a0f576040519150601f19603f3d011682016040523d82523d6000602084013e613a14565b606091505b505080985050600087118015613a2a5750600081115b15613a7757613a398782613d9b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601a54604051613a6e93929190615343565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613abd9061532e565b60006040518083038185875af1925050503d8060008114613afa576040519150601f19603f3d011682016040523d82523d6000602084013e613aff565b606091505b505080985050505050505050505050505b565b60008183613b209190614593565b905092915050565b60008183613b36919061461c565b905092915050565b505050565b505050565b60008183613b569190615237565b905092915050565b6000600267ffffffffffffffff811115613b7b57613b7a61420c565b5b604051908082528060200260200182016040528015613ba95781602001602082028036833780820191505090505b5090503081600081518110613bc157613bc06147c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8a919061538f565b81600181518110613c9e57613c9d6147c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d03307f000000000000000000000000000000000000000000000000000000000000000084612536565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d659594939291906154b5565b600060405180830381600087803b158015613d7f57600080fd5b505af1158015613d93573d6000803e3d6000fd5b505050505050565b613dc6307f000000000000000000000000000000000000000000000000000000000000000084612536565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e10611846565b426040518863ffffffff1660e01b8152600401613e329695949392919061550f565b60606040518083038185885af1158015613e50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e759190615585565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613eb6578082015181840152602081019050613e9b565b83811115613ec5576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ee782613e7c565b613ef18185613e87565b9350613f01818560208601613e98565b613f0a81613ecb565b840191505092915050565b60006020820190508181036000830152613f2f8184613edc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f7682613f4b565b9050919050565b613f8681613f6b565b8114613f9157600080fd5b50565b600081359050613fa381613f7d565b92915050565b6000819050919050565b613fbc81613fa9565b8114613fc757600080fd5b50565b600081359050613fd981613fb3565b92915050565b60008060408385031215613ff657613ff5613f41565b5b600061400485828601613f94565b925050602061401585828601613fca565b9150509250929050565b60008115159050919050565b6140348161401f565b82525050565b600060208201905061404f600083018461402b565b92915050565b60006020828403121561406b5761406a613f41565b5b600061407984828501613f94565b91505092915050565b6000819050919050565b60006140a76140a261409d84613f4b565b614082565b613f4b565b9050919050565b60006140b98261408c565b9050919050565b60006140cb826140ae565b9050919050565b6140db816140c0565b82525050565b60006020820190506140f660008301846140d2565b92915050565b61410581613fa9565b82525050565b600060208201905061412060008301846140fc565b92915050565b60006020828403121561413c5761413b613f41565b5b600061414a84828501613fca565b91505092915050565b60008060006060848603121561416c5761416b613f41565b5b600061417a86828701613f94565b935050602061418b86828701613f94565b925050604061419c86828701613fca565b9150509250925092565b600060ff82169050919050565b6141bc816141a6565b82525050565b60006020820190506141d760008301846141b3565b92915050565b6141e681613f6b565b82525050565b600060208201905061420160008301846141dd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61424482613ecb565b810181811067ffffffffffffffff821117156142635761426261420c565b5b80604052505050565b6000614276613f37565b9050614282828261423b565b919050565b600067ffffffffffffffff8211156142a2576142a161420c565b5b602082029050602081019050919050565b600080fd5b60006142cb6142c684614287565b61426c565b905080838252602082019050602084028301858111156142ee576142ed6142b3565b5b835b8181101561431757806143038882613f94565b8452602084019350506020810190506142f0565b5050509392505050565b600082601f83011261433657614335614207565b5b81356143468482602086016142b8565b91505092915050565b60006020828403121561436557614364613f41565b5b600082013567ffffffffffffffff81111561438357614382613f46565b5b61438f84828501614321565b91505092915050565b6143a18161401f565b81146143ac57600080fd5b50565b6000813590506143be81614398565b92915050565b600080604083850312156143db576143da613f41565b5b60006143e985828601613f94565b92505060206143fa858286016143af565b9150509250929050565b60008060006060848603121561441d5761441c613f41565b5b600061442b86828701613fca565b935050602061443c86828701613fca565b925050604061444d86828701613fca565b9150509250925092565b6000806040838503121561446e5761446d613f41565b5b600061447c85828601613f94565b925050602061448d85828601613f94565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144de57607f821691505b602082108114156144f2576144f1614497565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061452e602083613e87565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061459e82613fa9565b91506145a983613fa9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145e2576145e1614564565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061462782613fa9565b915061463283613fa9565b925082614642576146416145ed565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146a9602f83613e87565b91506146b48261464d565b604082019050919050565b600060208201905081810360008301526146d88161469c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061473b602883613e87565b9150614746826146df565b604082019050919050565b6000602082019050818103600083015261476a8161472e565b9050919050565b600061477c82613fa9565b915061478783613fa9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147bc576147bb614564565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061480182613fa9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561483457614833614564565b5b600182019050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614875601d83613e87565b91506148808261483f565b602082019050919050565b600060208201905081810360008301526148a481614868565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614907603983613e87565b9150614912826148ab565b604082019050919050565b60006020820190508181036000830152614936816148fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614999602583613e87565b91506149a48261493d565b604082019050919050565b600060208201905081810360008301526149c88161498c565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614a05601d83613e87565b9150614a10826149cf565b602082019050919050565b60006020820190508181036000830152614a34816149f8565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a97602483613e87565b9150614aa282614a3b565b604082019050919050565b60006020820190508181036000830152614ac681614a8a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614b29603583613e87565b9150614b3482614acd565b604082019050919050565b60006020820190508181036000830152614b5881614b1c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614bbb603483613e87565b9150614bc682614b5f565b604082019050919050565b60006020820190508181036000830152614bea81614bae565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c4d602683613e87565b9150614c5882614bf1565b604082019050919050565b60006020820190508181036000830152614c7c81614c40565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cdf602483613e87565b9150614cea82614c83565b604082019050919050565b60006020820190508181036000830152614d0e81614cd2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d71602283613e87565b9150614d7c82614d15565b604082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e03602583613e87565b9150614e0e82614da7565b604082019050919050565b60006020820190508181036000830152614e3281614df6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e95602383613e87565b9150614ea082614e39565b604082019050919050565b60006020820190508181036000830152614ec481614e88565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614f4d605183613e87565b9150614f5882614ecb565b606082019050919050565b60006020820190508181036000830152614f7c81614f40565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fb9601683613e87565b9150614fc482614f83565b602082019050919050565b60006020820190508181036000830152614fe881614fac565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615071604983613e87565b915061507c82614fef565b606082019050919050565b600060208201905081810360008301526150a081615064565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615103603583613e87565b915061510e826150a7565b604082019050919050565b60006020820190508181036000830152615132816150f6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061516f601383613e87565b915061517a82615139565b602082019050919050565b6000602082019050818103600083015261519e81615162565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615201603683613e87565b915061520c826151a5565b604082019050919050565b60006020820190508181036000830152615230816151f4565b9050919050565b600061524282613fa9565b915061524d83613fa9565b9250828210156152605761525f614564565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152c7602683613e87565b91506152d28261526b565b604082019050919050565b600060208201905081810360008301526152f6816152ba565b9050919050565b600081905092915050565b50565b60006153186000836152fd565b915061532382615308565b600082019050919050565b60006153398261530b565b9150819050919050565b600060608201905061535860008301866140fc565b61536560208301856140fc565b61537260408301846140fc565b949350505050565b60008151905061538981613f7d565b92915050565b6000602082840312156153a5576153a4613f41565b5b60006153b38482850161537a565b91505092915050565b6000819050919050565b60006153e16153dc6153d7846153bc565b614082565b613fa9565b9050919050565b6153f1816153c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61542c81613f6b565b82525050565b600061543e8383615423565b60208301905092915050565b6000602082019050919050565b6000615462826153f7565b61546c8185615402565b935061547783615413565b8060005b838110156154a857815161548f8882615432565b975061549a8361544a565b92505060018101905061547b565b5085935050505092915050565b600060a0820190506154ca60008301886140fc565b6154d760208301876153e8565b81810360408301526154e98186615457565b90506154f860608301856141dd565b61550560808301846140fc565b9695505050505050565b600060c08201905061552460008301896141dd565b61553160208301886140fc565b61553e60408301876153e8565b61554b60608301866153e8565b61555860808301856141dd565b61556560a08301846140fc565b979650505050505050565b60008151905061557f81613fb3565b92915050565b60008060006060848603121561559e5761559d613f41565b5b60006155ac86828701615570565b93505060206155bd86828701615570565b92505060406155ce86828701615570565b915050925092509256fea264697066735822122074a3bd20f1c5091a59dcbc73dfa339f57db939ae7ea4374582bd145fc758a1d664736f6c634300080b0033
Deployed Bytecode
0x60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c17b5b8c116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610bfd578063f2fde38b14610c28578063f637434214610c51578063f8b45b0514610c7c57610325565b8063dd62ed3e14610b6a578063e2f4560514610ba7578063e884f26014610bd257610325565b8063c8c8ebe4116100d1578063c8c8ebe414610aae578063d257b34f14610ad9578063d34628cc14610b16578063d85ba06314610b3f57610325565b8063c17b5b8c14610a31578063c18bc19514610a5a578063c876d0b914610a8357610325565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe314610977578063b62496f5146109a0578063bbc0c742146109dd578063c024666814610a0857610325565b8063a0d82dc5146108d2578063a457c2d7146108fd578063a9059cbb1461093a57610325565b80638da5cb5b146107d257806392136913146107fd57806395d89b41146108285780639a7a23d6146108535780639c3b4fdc1461087c5780639fccce32146108a757610325565b806349bd5a5e1161026a578063715018a6116102235780637bce5a04116101fd5780637bce5a041461073e5780638095d5641461076957806382aa7c68146107925780638a8c523c146107bb57610325565b8063715018a6146106d3578063751039fc146106ea5780637571336a1461071557610325565b806349bd5a5e146105af5780634a62bb65146105da5780634fbee193146106055780636a486a8e146106425780636c3bbfd71461066d57806370a082311461069657610325565b80631a8145bb116102d757806323b872dd116102b157806323b872dd146104cd578063313ce5671461050a57806339509351146105355780633bbac5791461057257610325565b80631a8145bb1461044e5780631f3fed8f14610479578063203e727e146104a457610325565b806306fdde031461032a578063095ea7b31461035557806310d5de53146103925780631694505e146103cf57806318160ddd146103fa5780631816467f1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610ca7565b60405161034c9190613f15565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190613fdf565b610d39565b604051610389919061403a565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190614055565b610d57565b6040516103c6919061403a565b60405180910390f35b3480156103db57600080fd5b506103e4610d77565b6040516103f191906140e1565b60405180910390f35b34801561040657600080fd5b5061040f610d9b565b60405161041c919061410b565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190614055565b610da5565b005b34801561045a57600080fd5b50610463610ee1565b604051610470919061410b565b60405180910390f35b34801561048557600080fd5b5061048e610ee7565b60405161049b919061410b565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190614126565b610eed565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190614153565b610ffc565b604051610501919061403a565b60405180910390f35b34801561051657600080fd5b5061051f61111b565b60405161052c91906141c2565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190613fdf565b611124565b604051610569919061403a565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190614055565b6111d0565b6040516105a6919061403a565b60405180910390f35b3480156105bb57600080fd5b506105c46111f0565b6040516105d191906141ec565b60405180910390f35b3480156105e657600080fd5b506105ef611214565b6040516105fc919061403a565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190614055565b611227565b604051610639919061403a565b60405180910390f35b34801561064e57600080fd5b5061065761127d565b604051610664919061410b565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f919061434f565b611283565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190614055565b611394565b6040516106ca919061410b565b60405180910390f35b3480156106df57600080fd5b506106e86113dc565b005b3480156106f657600080fd5b506106ff611464565b60405161070c919061403a565b60405180910390f35b34801561072157600080fd5b5061073c600480360381019061073791906143c4565b611504565b005b34801561074a57600080fd5b506107536115db565b604051610760919061410b565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614404565b6115e1565b005b34801561079e57600080fd5b506107b960048036038101906107b49190614126565b6116e0565b005b3480156107c757600080fd5b506107d0611793565b005b3480156107de57600080fd5b506107e7611846565b6040516107f491906141ec565b60405180910390f35b34801561080957600080fd5b50610812611870565b60405161081f919061410b565b60405180910390f35b34801561083457600080fd5b5061083d611876565b60405161084a9190613f15565b60405180910390f35b34801561085f57600080fd5b5061087a600480360381019061087591906143c4565b611908565b005b34801561088857600080fd5b50610891611a21565b60405161089e919061410b565b60405180910390f35b3480156108b357600080fd5b506108bc611a27565b6040516108c9919061410b565b60405180910390f35b3480156108de57600080fd5b506108e7611a2d565b6040516108f4919061410b565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f9190613fdf565b611a33565b604051610931919061403a565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c9190613fdf565b611b1e565b60405161096e919061403a565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614055565b611b3c565b005b3480156109ac57600080fd5b506109c760048036038101906109c29190614055565b611c78565b6040516109d4919061403a565b60405180910390f35b3480156109e957600080fd5b506109f2611c98565b6040516109ff919061403a565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906143c4565b611cab565b005b348015610a3d57600080fd5b50610a586004803603810190610a539190614404565b611d82565b005b348015610a6657600080fd5b50610a816004803603810190610a7c9190614126565b611e81565b005b348015610a8f57600080fd5b50610a98611f90565b604051610aa5919061403a565b60405180910390f35b348015610aba57600080fd5b50610ac3611fa3565b604051610ad0919061410b565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190614126565b611fa9565b604051610b0d919061403a565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b38919061434f565b6120fe565b005b348015610b4b57600080fd5b50610b546122f1565b604051610b61919061410b565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614457565b6122f7565b604051610b9e919061410b565b60405180910390f35b348015610bb357600080fd5b50610bbc61237e565b604051610bc9919061410b565b60405180910390f35b348015610bde57600080fd5b50610be7612384565b604051610bf4919061403a565b60405180910390f35b348015610c0957600080fd5b50610c12612424565b604051610c1f919061410b565b60405180910390f35b348015610c3457600080fd5b50610c4f6004803603810190610c4a9190614055565b61242a565b005b348015610c5d57600080fd5b50610c66612522565b604051610c73919061410b565b60405180910390f35b348015610c8857600080fd5b50610c91612528565b604051610c9e919061410b565b60405180910390f35b606060038054610cb6906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce2906144c6565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b5050505050905090565b6000610d4d610d4661252e565b8484612536565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610dad61252e565b73ffffffffffffffffffffffffffffffffffffffff16610dcb611846565b73ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890614544565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b60195481565b610ef561252e565b73ffffffffffffffffffffffffffffffffffffffff16610f13611846565b73ffffffffffffffffffffffffffffffffffffffff1614610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6090614544565b60405180910390fd5b670de0b6b3a76400006103e86001610f7f610d9b565b610f899190614593565b610f93919061461c565b610f9d919061461c565b811015610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd6906146bf565b60405180910390fd5b670de0b6b3a764000081610ff39190614593565b600b8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061104861252e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461110457828110156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690614751565b60405180910390fd5b611103856110fb61252e565b858403612536565b5b61110f858585612701565b60019150509392505050565b60006012905090565b60006111c661113161252e565b84846001600061113f61252e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111c19190614771565b612536565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000776de22240f4732f4df1d7ae5c21297c4ec92e7481565b600e60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b61128b61252e565b73ffffffffffffffffffffffffffffffffffffffff166112a9611846565b73ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690614544565b60405180910390fd5b60005b815181101561139057600060066000848481518110611324576113236147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611388906147f6565b915050611302565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113e461252e565b73ffffffffffffffffffffffffffffffffffffffff16611402611846565b73ffffffffffffffffffffffffffffffffffffffff1614611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90614544565b60405180910390fd5b6114626000613473565b565b600061146e61252e565b73ffffffffffffffffffffffffffffffffffffffff1661148c611846565b73ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d990614544565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b61150c61252e565b73ffffffffffffffffffffffffffffffffffffffff1661152a611846565b73ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790614544565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6115e961252e565b73ffffffffffffffffffffffffffffffffffffffff16611607611846565b73ffffffffffffffffffffffffffffffffffffffff161461165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490614544565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546116859190614771565b61168f9190614771565b601181905550601460115411156116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d29061488b565b60405180910390fd5b505050565b6116e861252e565b73ffffffffffffffffffffffffffffffffffffffff16611706611846565b73ffffffffffffffffffffffffffffffffffffffff161461175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390614544565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061178a814261353990919063ffffffff16565b60088190555050565b61179b61252e565b73ffffffffffffffffffffffffffffffffffffffff166117b9611846565b73ffffffffffffffffffffffffffffffffffffffff161461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690614544565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061183e60014261353990919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b606060048054611885906144c6565b80601f01602080910402602001604051908101604052809291908181526020018280546118b1906144c6565b80156118fe5780601f106118d3576101008083540402835291602001916118fe565b820191906000526020600020905b8154815290600101906020018083116118e157829003601f168201915b5050505050905090565b61191061252e565b73ffffffffffffffffffffffffffffffffffffffff1661192e611846565b73ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90614544565b60405180910390fd5b7f000000000000000000000000776de22240f4732f4df1d7ae5c21297c4ec92e7473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061491d565b60405180910390fd5b611a1d828261354f565b5050565b60145481565b601b5481565b60185481565b60008060016000611a4261252e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af6906149af565b60405180910390fd5b611b13611b0a61252e565b85858403612536565b600191505092915050565b6000611b32611b2b61252e565b8484612701565b6001905092915050565b611b4461252e565b73ffffffffffffffffffffffffffffffffffffffff16611b62611846565b73ffffffffffffffffffffffffffffffffffffffff1614611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614544565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b611cb361252e565b73ffffffffffffffffffffffffffffffffffffffff16611cd1611846565b73ffffffffffffffffffffffffffffffffffffffff1614611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90614544565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d8a61252e565b73ffffffffffffffffffffffffffffffffffffffff16611da8611846565b73ffffffffffffffffffffffffffffffffffffffff1614611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590614544565b60405180910390fd5b826016819055508160178190555080601881905550601854601754601654611e269190614771565b611e309190614771565b60158190555060196015541115611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7390614a1b565b60405180910390fd5b505050565b611e8961252e565b73ffffffffffffffffffffffffffffffffffffffff16611ea7611846565b73ffffffffffffffffffffffffffffffffffffffff1614611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef490614544565b60405180910390fd5b670de0b6b3a76400006103e86005611f13610d9b565b611f1d9190614593565b611f27919061461c565b611f31919061461c565b811015611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90614aad565b60405180910390fd5b670de0b6b3a764000081611f879190614593565b600d8190555050565b601060009054906101000a900460ff1681565b600b5481565b6000611fb361252e565b73ffffffffffffffffffffffffffffffffffffffff16611fd1611846565b73ffffffffffffffffffffffffffffffffffffffff1614612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614544565b60405180910390fd5b620186a06001612035610d9b565b61203f9190614593565b612049919061461c565b82101561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290614b3f565b60405180910390fd5b6103e86005612098610d9b565b6120a29190614593565b6120ac919061461c565b8211156120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590614bd1565b60405180910390fd5b81600c8190555060019050919050565b61210661252e565b73ffffffffffffffffffffffffffffffffffffffff16612124611846565b73ffffffffffffffffffffffffffffffffffffffff161461217a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217190614544565b60405180910390fd5b60005b81518110156122ed577f000000000000000000000000776de22240f4732f4df1d7ae5c21297c4ec92e7473ffffffffffffffffffffffffffffffffffffffff168282815181106121d0576121cf6147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561226257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16828281518110612241576122406147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156122da576001600660008484815181106122805761227f6147c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806122e5906147f6565b91505061217d565b5050565b60115481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061238e61252e565b73ffffffffffffffffffffffffffffffffffffffff166123ac611846565b73ffffffffffffffffffffffffffffffffffffffff1614612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990614544565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b60135481565b61243261252e565b73ffffffffffffffffffffffffffffffffffffffff16612450611846565b73ffffffffffffffffffffffffffffffffffffffff16146124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614544565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d90614c63565b60405180910390fd5b61251f81613473565b50565b60175481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259d90614cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260d90614d87565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126f4919061410b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276890614e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614eab565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286590614f63565b60405180910390fd5b600081141561288857612883838360006135aa565b61346e565b6008544210156128eb576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1615612fae57612908611846565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129765750612946611846565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129af5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a025750600760009054906101000a900460ff16155b15612fad57600e60019054906101000a900460ff16612afc57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612abc5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614fcf565b60405180910390fd5b5b601060009054906101000a900460ff1615612cc457612b19611846565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ba057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bf857507f000000000000000000000000776de22240f4732f4df1d7ae5c21297c4ec92e7473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cc35743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7590615087565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d675750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e0e57600b54811115612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da890615119565b60405180910390fd5b600d54612dbd83611394565b82612dc89190614771565b1115612e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0090615185565b60405180910390fd5b612fac565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb15750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0057600b54811115612efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef290615217565b60405180910390fd5b612fab565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612faa57600d54612f5d83611394565b82612f689190614771565b1115612fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa090615185565b60405180910390fd5b5b5b5b5b5b6000612fb930611394565b90506000600c548210159050808015612fdf5750600760009054906101000a900460ff16155b80156130355750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561308b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613125576001600760006101000a81548160ff02191690831515021790555061310961382b565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131db5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131e557600090505b6000811561345e57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561324857506000601554115b1561331557613275606461326760155488613b1290919063ffffffff16565b613b2890919063ffffffff16565b9050601554601754826132889190614593565b613292919061461c565b601a60008282546132a39190614771565b92505081905550601554601854826132bb9190614593565b6132c5919061461c565b601b60008282546132d69190614771565b92505081905550601554601654826132ee9190614593565b6132f8919061461c565b601960008282546133099190614771565b9250508190555061343a565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561337057506000601154115b156134395761339d606461338f60115488613b1290919063ffffffff16565b613b2890919063ffffffff16565b9050601154601354826133b09190614593565b6133ba919061461c565b601a60008282546133cb9190614771565b92505081905550601154601454826133e39190614593565b6133ed919061461c565b601b60008282546133fe9190614771565b92505081905550601154601254826134169190614593565b613420919061461c565b601960008282546134319190614771565b925050819055505b5b600081111561344f5761344e8730836135aa565b5b808561345b9190615237565b94505b6134698787876135aa565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836135479190614771565b905092915050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561361a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361190614e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561368a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368190614eab565b60405180910390fd5b613695838383613b3e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561371b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613712906152dd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137ae9190614771565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613812919061410b565b60405180910390a3613825848484613b43565b50505050565b600061383630611394565b90506000601b54601954601a5461384d9190614771565b6138579190614771565b90506000808314806138695750600082145b1561387657505050613b10565b6014600c546138859190614593565b83111561389e576014600c5461389b9190614593565b92505b6000600283601a54866138b19190614593565b6138bb919061461c565b6138c5919061461c565b905060006138dc8286613b4890919063ffffffff16565b905060004790506138ec82613b5e565b60006139018247613b4890919063ffffffff16565b9050600061392c8761391e60195485613b1290919063ffffffff16565b613b2890919063ffffffff16565b9050600061395788613949601b5486613b1290919063ffffffff16565b613b2890919063ffffffff16565b905060008183856139689190615237565b6139729190615237565b90506000601a8190555060006019819055506000601b81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516139d29061532e565b60006040518083038185875af1925050503d8060008114613a0f576040519150601f19603f3d011682016040523d82523d6000602084013e613a14565b606091505b505080985050600087118015613a2a5750600081115b15613a7757613a398782613d9b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601a54604051613a6e93929190615343565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613abd9061532e565b60006040518083038185875af1925050503d8060008114613afa576040519150601f19603f3d011682016040523d82523d6000602084013e613aff565b606091505b505080985050505050505050505050505b565b60008183613b209190614593565b905092915050565b60008183613b36919061461c565b905092915050565b505050565b505050565b60008183613b569190615237565b905092915050565b6000600267ffffffffffffffff811115613b7b57613b7a61420c565b5b604051908082528060200260200182016040528015613ba95781602001602082028036833780820191505090505b5090503081600081518110613bc157613bc06147c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8a919061538f565b81600181518110613c9e57613c9d6147c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d03307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612536565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d659594939291906154b5565b600060405180830381600087803b158015613d7f57600080fd5b505af1158015613d93573d6000803e3d6000fd5b505050505050565b613dc6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612536565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e10611846565b426040518863ffffffff1660e01b8152600401613e329695949392919061550f565b60606040518083038185885af1158015613e50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e759190615585565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613eb6578082015181840152602081019050613e9b565b83811115613ec5576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ee782613e7c565b613ef18185613e87565b9350613f01818560208601613e98565b613f0a81613ecb565b840191505092915050565b60006020820190508181036000830152613f2f8184613edc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f7682613f4b565b9050919050565b613f8681613f6b565b8114613f9157600080fd5b50565b600081359050613fa381613f7d565b92915050565b6000819050919050565b613fbc81613fa9565b8114613fc757600080fd5b50565b600081359050613fd981613fb3565b92915050565b60008060408385031215613ff657613ff5613f41565b5b600061400485828601613f94565b925050602061401585828601613fca565b9150509250929050565b60008115159050919050565b6140348161401f565b82525050565b600060208201905061404f600083018461402b565b92915050565b60006020828403121561406b5761406a613f41565b5b600061407984828501613f94565b91505092915050565b6000819050919050565b60006140a76140a261409d84613f4b565b614082565b613f4b565b9050919050565b60006140b98261408c565b9050919050565b60006140cb826140ae565b9050919050565b6140db816140c0565b82525050565b60006020820190506140f660008301846140d2565b92915050565b61410581613fa9565b82525050565b600060208201905061412060008301846140fc565b92915050565b60006020828403121561413c5761413b613f41565b5b600061414a84828501613fca565b91505092915050565b60008060006060848603121561416c5761416b613f41565b5b600061417a86828701613f94565b935050602061418b86828701613f94565b925050604061419c86828701613fca565b9150509250925092565b600060ff82169050919050565b6141bc816141a6565b82525050565b60006020820190506141d760008301846141b3565b92915050565b6141e681613f6b565b82525050565b600060208201905061420160008301846141dd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61424482613ecb565b810181811067ffffffffffffffff821117156142635761426261420c565b5b80604052505050565b6000614276613f37565b9050614282828261423b565b919050565b600067ffffffffffffffff8211156142a2576142a161420c565b5b602082029050602081019050919050565b600080fd5b60006142cb6142c684614287565b61426c565b905080838252602082019050602084028301858111156142ee576142ed6142b3565b5b835b8181101561431757806143038882613f94565b8452602084019350506020810190506142f0565b5050509392505050565b600082601f83011261433657614335614207565b5b81356143468482602086016142b8565b91505092915050565b60006020828403121561436557614364613f41565b5b600082013567ffffffffffffffff81111561438357614382613f46565b5b61438f84828501614321565b91505092915050565b6143a18161401f565b81146143ac57600080fd5b50565b6000813590506143be81614398565b92915050565b600080604083850312156143db576143da613f41565b5b60006143e985828601613f94565b92505060206143fa858286016143af565b9150509250929050565b60008060006060848603121561441d5761441c613f41565b5b600061442b86828701613fca565b935050602061443c86828701613fca565b925050604061444d86828701613fca565b9150509250925092565b6000806040838503121561446e5761446d613f41565b5b600061447c85828601613f94565b925050602061448d85828601613f94565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144de57607f821691505b602082108114156144f2576144f1614497565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061452e602083613e87565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061459e82613fa9565b91506145a983613fa9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145e2576145e1614564565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061462782613fa9565b915061463283613fa9565b925082614642576146416145ed565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146a9602f83613e87565b91506146b48261464d565b604082019050919050565b600060208201905081810360008301526146d88161469c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061473b602883613e87565b9150614746826146df565b604082019050919050565b6000602082019050818103600083015261476a8161472e565b9050919050565b600061477c82613fa9565b915061478783613fa9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147bc576147bb614564565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061480182613fa9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561483457614833614564565b5b600182019050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614875601d83613e87565b91506148808261483f565b602082019050919050565b600060208201905081810360008301526148a481614868565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614907603983613e87565b9150614912826148ab565b604082019050919050565b60006020820190508181036000830152614936816148fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614999602583613e87565b91506149a48261493d565b604082019050919050565b600060208201905081810360008301526149c88161498c565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614a05601d83613e87565b9150614a10826149cf565b602082019050919050565b60006020820190508181036000830152614a34816149f8565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a97602483613e87565b9150614aa282614a3b565b604082019050919050565b60006020820190508181036000830152614ac681614a8a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614b29603583613e87565b9150614b3482614acd565b604082019050919050565b60006020820190508181036000830152614b5881614b1c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614bbb603483613e87565b9150614bc682614b5f565b604082019050919050565b60006020820190508181036000830152614bea81614bae565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c4d602683613e87565b9150614c5882614bf1565b604082019050919050565b60006020820190508181036000830152614c7c81614c40565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cdf602483613e87565b9150614cea82614c83565b604082019050919050565b60006020820190508181036000830152614d0e81614cd2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d71602283613e87565b9150614d7c82614d15565b604082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e03602583613e87565b9150614e0e82614da7565b604082019050919050565b60006020820190508181036000830152614e3281614df6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e95602383613e87565b9150614ea082614e39565b604082019050919050565b60006020820190508181036000830152614ec481614e88565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614f4d605183613e87565b9150614f5882614ecb565b606082019050919050565b60006020820190508181036000830152614f7c81614f40565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614fb9601683613e87565b9150614fc482614f83565b602082019050919050565b60006020820190508181036000830152614fe881614fac565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615071604983613e87565b915061507c82614fef565b606082019050919050565b600060208201905081810360008301526150a081615064565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615103603583613e87565b915061510e826150a7565b604082019050919050565b60006020820190508181036000830152615132816150f6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061516f601383613e87565b915061517a82615139565b602082019050919050565b6000602082019050818103600083015261519e81615162565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615201603683613e87565b915061520c826151a5565b604082019050919050565b60006020820190508181036000830152615230816151f4565b9050919050565b600061524282613fa9565b915061524d83613fa9565b9250828210156152605761525f614564565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152c7602683613e87565b91506152d28261526b565b604082019050919050565b600060208201905081810360008301526152f6816152ba565b9050919050565b600081905092915050565b50565b60006153186000836152fd565b915061532382615308565b600082019050919050565b60006153398261530b565b9150819050919050565b600060608201905061535860008301866140fc565b61536560208301856140fc565b61537260408301846140fc565b949350505050565b60008151905061538981613f7d565b92915050565b6000602082840312156153a5576153a4613f41565b5b60006153b38482850161537a565b91505092915050565b6000819050919050565b60006153e16153dc6153d7846153bc565b614082565b613fa9565b9050919050565b6153f1816153c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61542c81613f6b565b82525050565b600061543e8383615423565b60208301905092915050565b6000602082019050919050565b6000615462826153f7565b61546c8185615402565b935061547783615413565b8060005b838110156154a857815161548f8882615432565b975061549a8361544a565b92505060018101905061547b565b5085935050505092915050565b600060a0820190506154ca60008301886140fc565b6154d760208301876153e8565b81810360408301526154e98186615457565b90506154f860608301856141dd565b61550560808301846140fc565b9695505050505050565b600060c08201905061552460008301896141dd565b61553160208301886140fc565b61553e60408301876153e8565b61554b60608301866153e8565b61555860808301856141dd565b61556560a08301846140fc565b979650505050505050565b60008151905061557f81613fb3565b92915050565b60008060006060848603121561559e5761559d613f41565b5b60006155ac86828701615570565b93505060206155bd86828701615570565b92505060406155ce86828701615570565b915050925092509256fea264697066735822122074a3bd20f1c5091a59dcbc73dfa339f57db939ae7ea4374582bd145fc758a1d664736f6c634300080b0033
Deployed Bytecode Sourcemap
19450:15291:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10754:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11668:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20803:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19524:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11075:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27050:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20582:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20542;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24695:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11845:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10974:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19629:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19582;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19938:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27218:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20396:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27634:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11191:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18233:103;;;;;;;;;;;;;:::i;:::-;;23905:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25158:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20288:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25314:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26534:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23720:130;;;;;;;;;;;;;:::i;:::-;;18010:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20431:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10862:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26218:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20362:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20622:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20507:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12649:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11326:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26833:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21025:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19978:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26078:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25692:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24935:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20202:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19815:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24301:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27355:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20254:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11509:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19857:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24091:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20325:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18344:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20469:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19897:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10754:100;10808:13;10841:5;10834:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10754:100;:::o;11668:169::-;11751:4;11768:39;11777:12;:10;:12::i;:::-;11791:7;11800:6;11768:8;:39::i;:::-;11825:4;11818:11;;11668:169;;;;:::o;20803:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;19524:51::-;;;:::o;11075:108::-;11136:7;11163:12;;11156:19;;11075:108;:::o;27050:157::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27157:9:::1;;;;;;;;;;;27129:38;;27146:9;27129:38;;;;;;;;;;;;27190:9;27178;;:21;;;;;;;;;;;;;;;;;;27050:157:::0;:::o;20582:33::-;;;;:::o;20542:::-;;;;:::o;24695:232::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24816:4:::1;24808;24804:1;24788:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;24787:33;;;;:::i;:::-;24777:6;:43;;24769:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24915:4;24906:6;:13;;;;:::i;:::-;24883:20;:36;;;;24695:232:::0;:::o;11845:573::-;11985:4;12002:24;12029:11;:19;12041:6;12029:19;;;;;;;;;;;;;;;:33;12049:12;:10;:12::i;:::-;12029:33;;;;;;;;;;;;;;;;12002:60;;12097:17;12077:16;:37;12073:265;;12159:6;12139:16;:26;;12131:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12254:57;12263:6;12271:12;:10;:12::i;:::-;12304:6;12285:16;:25;12254:8;:57::i;:::-;12073:265;12350:36;12360:6;12368:9;12379:6;12350:9;:36::i;:::-;12406:4;12399:11;;;11845:573;;;;;:::o;10974:93::-;11032:5;11057:2;11050:9;;10974:93;:::o;12426:215::-;12514:4;12531:80;12540:12;:10;:12::i;:::-;12554:7;12600:10;12563:11;:25;12575:12;:10;:12::i;:::-;12563:25;;;;;;;;;;;;;;;:34;12589:7;12563:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12531:8;:80::i;:::-;12629:4;12622:11;;12426:215;;;;:::o;19629:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;19582:::-;;;:::o;19938:33::-;;;;;;;;;;;;;:::o;27218:125::-;27283:4;27307:19;:28;27327:7;27307:28;;;;;;;;;;;;;;;;;;;;;;;;;27300:35;;27218:125;;;:::o;20396:28::-;;;;:::o;27634:168::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27712:6:::1;27707:88;27728:4;:11;27724:1;:15;27707:88;;;27778:5;27761;:14;27767:4;27772:1;27767:7;;;;;;;;:::i;:::-;;;;;;;;27761:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;27741:3;;;;;:::i;:::-;;;;27707:88;;;;27634:168:::0;:::o;11191:127::-;11265:7;11292:9;:18;11302:7;11292:18;;;;;;;;;;;;;;;;11285:25;;11191:127;;;:::o;18233:103::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18298:30:::1;18325:1;18298:18;:30::i;:::-;18233:103::o:0;23905:121::-;23957:4;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23991:5:::1;23974:14;;:22;;;;;;;;;;;;;;;;;;24014:4;24007:11;;23905:121:::0;:::o;25158:144::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25290:4:::1;25248:31;:39;25280:6;25248:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25158:144:::0;;:::o;20288:30::-;;;;:::o;25314:369::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25448:13:::1;25430:15;:31;;;;25490:13;25472:15;:31;;;;25526:7;25514:9;:19;;;;25595:9;;25577:15;;25559;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;25544:12;:60;;;;25639:2;25623:12;;:18;;25615:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25314:369:::0;;;:::o;26534:149::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26619:4:::1;26603:13;;:20;;;;;;;;;;;;;;;;;;26648:27;26668:6;26648:15;:19;;:27;;;;:::i;:::-;26634:11;:41;;;;26534:149:::0;:::o;23720:130::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23791:4:::1;23775:13;;:20;;;;;;;;;;;;;;;;;;23820:22;23840:1;23820:15;:19;;:22;;;;:::i;:::-;23806:11;:36;;;;23720:130::o:0;18010:87::-;18056:7;18083:6;;;;;;;;;;;18076:13;;18010:87;:::o;20431:31::-;;;;:::o;10862:104::-;10918:13;10951:7;10944:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10862:104;:::o;26218:244::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26325:13:::1;26317:21;;:4;:21;;;;26309:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;26413:41;26442:4;26448:5;26413:28;:41::i;:::-;26218:244:::0;;:::o;20362:24::-;;;;:::o;20622:27::-;;;;:::o;20507:25::-;;;;:::o;12649:413::-;12742:4;12759:24;12786:11;:25;12798:12;:10;:12::i;:::-;12786:25;;;;;;;;;;;;;;;:34;12812:7;12786:34;;;;;;;;;;;;;;;;12759:61;;12859:15;12839:16;:35;;12831:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12952:67;12961:12;:10;:12::i;:::-;12975:7;13003:15;12984:16;:34;12952:8;:67::i;:::-;13050:4;13043:11;;;12649:413;;;;:::o;11326:175::-;11412:4;11429:42;11439:12;:10;:12::i;:::-;11453:9;11464:6;11429:9;:42::i;:::-;11489:4;11482:11;;11326:175;;;;:::o;26833:208::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26970:15:::1;;;;;;;;;;;26927:59;;26950:18;26927:59;;;;;;;;;;;;27015:18;26997:15;;:36;;;;;;;;;;;;;;;;;;26833:208:::0;:::o;21025:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;19978:33::-;;;;;;;;;;;;;:::o;26078:132::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26194:8:::1;26163:19;:28;26183:7;26163:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26078:132:::0;;:::o;25692:378::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25828:13:::1;25809:16;:32;;;;25871:13;25852:16;:32;;;;25908:7;25895:10;:20;;;;25980:10;;25961:16;;25942;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;25926:13;:64;;;;26026:2;26009:13;;:19;;26001:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25692:378:::0;;;:::o;24935:211::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25057:4:::1;25051;25047:1;25031:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;25030:31;;;;:::i;:::-;25020:6;:41;;25012:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25134:4;25125:6;:13;;;;:::i;:::-;25113:9;:25;;;;24935:211:::0;:::o;20202:39::-;;;;;;;;;;;;;:::o;19815:35::-;;;;:::o;24301:382::-;24382:4;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24439:6:::1;24435:1;24419:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;24406:9;:39;;24398:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;24554:4;24550:1;24534:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;24521:9;:37;;24513:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24646:9;24625:18;:30;;;;24672:4;24665:11;;24301:382:::0;;;:::o;27355:267::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27430:6:::1;27425:190;27446:4;:11;27442:1;:15;27425:190;;;27494:13;27483:24;;:4;27488:1;27483:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;27530:15;27511:35;;:4;27516:1;27511:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;27483:63;27479:125;;;27584:4;27567:5;:14;27573:4;27578:1;27573:7;;;;;;;;:::i;:::-;;;;;;;;27567:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27479:125;27459:3;;;;;:::i;:::-;;;;27425:190;;;;27355:267:::0;:::o;20254:27::-;;;;:::o;11509:151::-;11598:7;11625:11;:18;11637:5;11625:18;;;;;;;;;;;;;;;:27;11644:7;11625:27;;;;;;;;;;;;;;;;11618:34;;11509:151;;;;:::o;19857:33::-;;;;:::o;24091:135::-;24151:4;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24191:5:::1;24168:20;;:28;;;;;;;;;;;;;;;;;;24214:4;24207:11;;24091:135:::0;:::o;20325:30::-;;;;:::o;18344:201::-;18156:12;:10;:12::i;:::-;18145:23;;:7;:5;:7::i;:::-;:23;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18453:1:::1;18433:22;;:8;:22;;;;18425:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18509:28;18528:8;18509:18;:28::i;:::-;18344:201:::0;:::o;20469:31::-;;;;:::o;19897:24::-;;;;:::o;7848:98::-;7901:7;7928:10;7921:17;;7848:98;:::o;14817:380::-;14970:1;14953:19;;:5;:19;;;;14945:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15051:1;15032:21;;:7;:21;;;;15024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15135:6;15105:11;:18;15117:5;15105:18;;;;;;;;;;;;;;;:27;15124:7;15105:27;;;;;;;;;;;;;;;:36;;;;15173:7;15157:32;;15166:5;15157:32;;;15182:6;15157:32;;;;;;:::i;:::-;;;;;;;;14817:380;;;:::o;27810:4226::-;27958:1;27942:18;;:4;:18;;;;27934:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28035:1;28021:16;;:2;:16;;;;28013:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28097:5;:11;28103:4;28097:11;;;;;;;;;;;;;;;;;;;;;;;;;28096:12;28088:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;28230:1;28220:6;:11;28216:93;;;28248:28;28264:4;28270:2;28274:1;28248:15;:28::i;:::-;28291:7;;28216:93;28351:11;;28333:15;:29;28329:51;;;28376:4;28364:5;:9;28370:2;28364:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;28329:51;28405:14;;;;;;;;;;;28401:1834;;;28466:7;:5;:7::i;:::-;28458:15;;:4;:15;;;;:49;;;;;28500:7;:5;:7::i;:::-;28494:13;;:2;:13;;;;28458:49;:86;;;;;28542:1;28528:16;;:2;:16;;;;28458:86;:128;;;;;28579:6;28565:21;;:2;:21;;;;28458:128;:159;;;;;28608:9;;;;;;;;;;;28607:10;28458:159;28436:1788;;;28657:13;;;;;;;;;;;28652:150;;28703:19;:25;28723:4;28703:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28732:19;:23;28752:2;28732:23;;;;;;;;;;;;;;;;;;;;;;;;;28703:52;28695:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;28652:150;28960:20;;;;;;;;;;;28956:423;;;29014:7;:5;:7::i;:::-;29008:13;;:2;:13;;;;:47;;;;;29039:15;29025:30;;:2;:30;;;;29008:47;:79;;;;;29073:13;29059:28;;:2;:28;;;;29008:79;29004:356;;;29165:12;29123:28;:39;29152:9;29123:39;;;;;;;;;;;;;;;;:54;29115:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29324:12;29282:28;:39;29311:9;29282:39;;;;;;;;;;;;;;;:54;;;;29004:356;28956:423;29447:25;:31;29473:4;29447:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;29483:31;:35;29515:2;29483:35;;;;;;;;;;;;;;;;;;;;;;;;;29482:36;29447:71;29443:766;;;29561:20;;29551:6;:30;;29543:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;29696:9;;29679:13;29689:2;29679:9;:13::i;:::-;29670:6;:22;;;;:::i;:::-;:35;;29662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29443:766;;;29822:25;:29;29848:2;29822:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;29856:31;:37;29888:4;29856:37;;;;;;;;;;;;;;;;;;;;;;;;;29855:38;29822:71;29818:391;;;29936:20;;29926:6;:30;;29918:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;29818:391;;;30063:31;:35;30095:2;30063:35;;;;;;;;;;;;;;;;;;;;;;;;;30058:151;;30156:9;;30139:13;30149:2;30139:9;:13::i;:::-;30130:6;:22;;;;:::i;:::-;:35;;30122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30058:151;29818:391;29443:766;28436:1788;28401:1834;30249:28;30280:24;30298:4;30280:9;:24::i;:::-;30249:55;;30315:12;30354:18;;30330:20;:42;;30315:57;;30403:7;:34;;;;;30428:9;;;;;;;;;;;30427:10;30403:34;:83;;;;;30455:25;:31;30481:4;30455:31;;;;;;;;;;;;;;;;;;;;;;;;;30454:32;30403:83;:126;;;;;30504:19;:25;30524:4;30504:25;;;;;;;;;;;;;;;;;;;;;;;;;30503:26;30403:126;:167;;;;;30547:19;:23;30567:2;30547:23;;;;;;;;;;;;;;;;;;;;;;;;;30546:24;30403:167;30385:297;;;30609:4;30597:9;;:16;;;;;;;;;;;;;;;;;;30628:10;:8;:10::i;:::-;30665:5;30653:9;;:17;;;;;;;;;;;;;;;;;;30385:297;30694:12;30710:9;;;;;;;;;;;30709:10;30694:25;;30821:19;:25;30841:4;30821:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30850:19;:23;30870:2;30850:23;;;;;;;;;;;;;;;;;;;;;;;;;30821:52;30817:73;;;30885:5;30875:15;;30817:73;30921:12;31026:7;31022:961;;;31078:25;:29;31104:2;31078:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;31127:1;31111:13;;:17;31078:50;31074:754;;;31155:34;31185:3;31155:25;31166:13;;31155:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;31148:41;;31256:13;;31237:16;;31230:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31208:18;;:61;;;;;;;:::i;:::-;;;;;;;;31324:13;;31311:10;;31304:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;31288:12;;:49;;;;;;;:::i;:::-;;;;;;;;31404:13;;31385:16;;31378:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31356:18;;:61;;;;;;;:::i;:::-;;;;;;;;31074:754;;;31478:25;:31;31504:4;31478:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;31528:1;31513:12;;:16;31478:51;31475:353;;;31557:33;31586:3;31557:24;31568:12;;31557:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;31550:40;;31656:12;;31638:15;;31631:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31609:18;;:59;;;;;;;:::i;:::-;;;;;;;;31722:12;;31710:9;;31703:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;31687:12;;:47;;;;;;;:::i;:::-;;;;;;;;31800:12;;31782:15;;31775:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31753:18;;:59;;;;;;;:::i;:::-;;;;;;;;31475:353;31074:754;31855:1;31848:4;:8;31844:91;;;31877:42;31893:4;31907;31914;31877:15;:42::i;:::-;31844:91;31967:4;31957:14;;;;;:::i;:::-;;;31022:961;31995:33;32011:4;32017:2;32021:6;31995:15;:33::i;:::-;27923:4113;;;;27810:4226;;;;:::o;18553:191::-;18627:16;18646:6;;;;;;;;;;;18627:25;;18672:8;18663:6;;:17;;;;;;;;;;;;;;;;;;18727:8;18696:40;;18717:8;18696:40;;;;;;;;;;;;18616:128;18553:191;:::o;16607:98::-;16665:7;16696:1;16692;:5;;;;:::i;:::-;16685:12;;16607:98;;;;:::o;26691:130::-;26808:5;26774:25;:31;26800:4;26774:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26691:130;;:::o;13070:733::-;13228:1;13210:20;;:6;:20;;;;13202:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13312:1;13291:23;;:9;:23;;;;13283:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13367:47;13388:6;13396:9;13407:6;13367:20;:47::i;:::-;13427:21;13451:9;:17;13461:6;13451:17;;;;;;;;;;;;;;;;13427:41;;13504:6;13487:13;:23;;13479:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13625:6;13609:13;:22;13589:9;:17;13599:6;13589:17;;;;;;;;;;;;;;;:42;;;;13677:6;13653:9;:20;13663:9;13653:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13718:9;13701:35;;13710:6;13701:35;;;13729:6;13701:35;;;;;;:::i;:::-;;;;;;;;13749:46;13769:6;13777:9;13788:6;13749:19;:46::i;:::-;13191:612;13070:733;;;:::o;33168:1570::-;33207:23;33233:24;33251:4;33233:9;:24::i;:::-;33207:50;;33268:25;33338:12;;33317:18;;33296;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;33268:82;;33361:12;33409:1;33390:15;:20;:46;;;;33435:1;33414:17;:22;33390:46;33387:60;;;33439:7;;;;;33387:60;33502:2;33481:18;;:23;;;;:::i;:::-;33463:15;:41;33460:111;;;33557:2;33536:18;;:23;;;;:::i;:::-;33518:41;;33460:111;33633:23;33718:1;33698:17;33677:18;;33659:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;33633:86;;33730:26;33759:36;33779:15;33759;:19;;:36;;;;:::i;:::-;33730:65;;33809:25;33837:21;33809:49;;33872:37;33890:18;33872:17;:37::i;:::-;33924:18;33945:44;33971:17;33945:21;:25;;:44;;;;:::i;:::-;33924:65;;34003:23;34029:57;34068:17;34029:34;34044:18;;34029:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;34003:83;;34097:17;34117:51;34150:17;34117:28;34132:12;;34117:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;34097:71;;34179:23;34236:9;34218:15;34205:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;34179:66;;34283:1;34262:18;:22;;;;34316:1;34295:18;:22;;;;34343:1;34328:12;:16;;;;34379:9;;;;;;;;;;;34371:23;;34402:9;34371:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34358:58;;;;;34451:1;34433:15;:19;:42;;;;;34474:1;34456:15;:19;34433:42;34430:211;;;34491:47;34505:15;34522;34491:13;:47::i;:::-;34558:71;34573:18;34593:15;34610:18;;34558:71;;;;;;;;:::i;:::-;;;;;;;;34430:211;34675:15;;;;;;;;;;;34667:29;;34704:21;34667:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34654:76;;;;;33196:1542;;;;;;;;;;33168:1570;:::o;16819:98::-;16877:7;16908:1;16904;:5;;;;:::i;:::-;16897:12;;16819:98;;;;:::o;16925:::-;16983:7;17014:1;17010;:5;;;;:::i;:::-;17003:12;;16925:98;;;;:::o;15205:125::-;;;;:::o;15338:124::-;;;;:::o;16713:98::-;16771:7;16802:1;16798;:5;;;;:::i;:::-;16791:12;;16713:98;;;;:::o;32044:590::-;32171:21;32209:1;32195:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32171:40;;32240:4;32222;32227:1;32222:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32266:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32256:4;32261:1;32256:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32301:62;32318:4;32333:15;32351:11;32301:8;:62::i;:::-;32402:15;:66;;;32483:11;32509:1;32553:4;32580;32600:15;32402:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32100:534;32044:590;:::o;32646:514::-;32795:62;32812:4;32827:15;32845:11;32795:8;:62::i;:::-;32900:15;:31;;;32939:9;32972:4;32992:11;33018:1;33061;33104:7;:5;:7::i;:::-;33126:15;32900:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32646:514;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:86::-;6154:7;6194:4;6187:5;6183:16;6172:27;;6119:86;;;:::o;6211:112::-;6294:22;6310:5;6294:22;:::i;:::-;6289:3;6282:35;6211:112;;:::o;6329:214::-;6418:4;6456:2;6445:9;6441:18;6433:26;;6469:67;6533:1;6522:9;6518:17;6509:6;6469:67;:::i;:::-;6329:214;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:222::-;6766:4;6804:2;6793:9;6789:18;6781:26;;6817:71;6885:1;6874:9;6870:17;6861:6;6817:71;:::i;:::-;6673:222;;;;:::o;6901:117::-;7010:1;7007;7000:12;7024:180;7072:77;7069:1;7062:88;7169:4;7166:1;7159:15;7193:4;7190:1;7183:15;7210:281;7293:27;7315:4;7293:27;:::i;:::-;7285:6;7281:40;7423:6;7411:10;7408:22;7387:18;7375:10;7372:34;7369:62;7366:88;;;7434:18;;:::i;:::-;7366:88;7474:10;7470:2;7463:22;7253:238;7210:281;;:::o;7497:129::-;7531:6;7558:20;;:::i;:::-;7548:30;;7587:33;7615:4;7607:6;7587:33;:::i;:::-;7497:129;;;:::o;7632:311::-;7709:4;7799:18;7791:6;7788:30;7785:56;;;7821:18;;:::i;:::-;7785:56;7871:4;7863:6;7859:17;7851:25;;7931:4;7925;7921:15;7913:23;;7632:311;;;:::o;7949:117::-;8058:1;8055;8048:12;8089:710;8185:5;8210:81;8226:64;8283:6;8226:64;:::i;:::-;8210:81;:::i;:::-;8201:90;;8311:5;8340:6;8333:5;8326:21;8374:4;8367:5;8363:16;8356:23;;8427:4;8419:6;8415:17;8407:6;8403:30;8456:3;8448:6;8445:15;8442:122;;;8475:79;;:::i;:::-;8442:122;8590:6;8573:220;8607:6;8602:3;8599:15;8573:220;;;8682:3;8711:37;8744:3;8732:10;8711:37;:::i;:::-;8706:3;8699:50;8778:4;8773:3;8769:14;8762:21;;8649:144;8633:4;8628:3;8624:14;8617:21;;8573:220;;;8577:21;8191:608;;8089:710;;;;;:::o;8822:370::-;8893:5;8942:3;8935:4;8927:6;8923:17;8919:27;8909:122;;8950:79;;:::i;:::-;8909:122;9067:6;9054:20;9092:94;9182:3;9174:6;9167:4;9159:6;9155:17;9092:94;:::i;:::-;9083:103;;8899:293;8822:370;;;;:::o;9198:539::-;9282:6;9331:2;9319:9;9310:7;9306:23;9302:32;9299:119;;;9337:79;;:::i;:::-;9299:119;9485:1;9474:9;9470:17;9457:31;9515:18;9507:6;9504:30;9501:117;;;9537:79;;:::i;:::-;9501:117;9642:78;9712:7;9703:6;9692:9;9688:22;9642:78;:::i;:::-;9632:88;;9428:302;9198:539;;;;:::o;9743:116::-;9813:21;9828:5;9813:21;:::i;:::-;9806:5;9803:32;9793:60;;9849:1;9846;9839:12;9793:60;9743:116;:::o;9865:133::-;9908:5;9946:6;9933:20;9924:29;;9962:30;9986:5;9962:30;:::i;:::-;9865:133;;;;:::o;10004:468::-;10069:6;10077;10126:2;10114:9;10105:7;10101:23;10097:32;10094:119;;;10132:79;;:::i;:::-;10094:119;10252:1;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10223:117;10379:2;10405:50;10447:7;10438:6;10427:9;10423:22;10405:50;:::i;:::-;10395:60;;10350:115;10004:468;;;;;:::o;10478:619::-;10555:6;10563;10571;10620:2;10608:9;10599:7;10595:23;10591:32;10588:119;;;10626:79;;:::i;:::-;10588:119;10746:1;10771:53;10816:7;10807:6;10796:9;10792:22;10771:53;:::i;:::-;10761:63;;10717:117;10873:2;10899:53;10944:7;10935:6;10924:9;10920:22;10899:53;:::i;:::-;10889:63;;10844:118;11001:2;11027:53;11072:7;11063:6;11052:9;11048:22;11027:53;:::i;:::-;11017:63;;10972:118;10478:619;;;;;:::o;11103:474::-;11171:6;11179;11228:2;11216:9;11207:7;11203:23;11199:32;11196:119;;;11234:79;;:::i;:::-;11196:119;11354:1;11379:53;11424:7;11415:6;11404:9;11400:22;11379:53;:::i;:::-;11369:63;;11325:117;11481:2;11507:53;11552:7;11543:6;11532:9;11528:22;11507:53;:::i;:::-;11497:63;;11452:118;11103:474;;;;;:::o;11583:180::-;11631:77;11628:1;11621:88;11728:4;11725:1;11718:15;11752:4;11749:1;11742:15;11769:320;11813:6;11850:1;11844:4;11840:12;11830:22;;11897:1;11891:4;11887:12;11918:18;11908:81;;11974:4;11966:6;11962:17;11952:27;;11908:81;12036:2;12028:6;12025:14;12005:18;12002:38;11999:84;;;12055:18;;:::i;:::-;11999:84;11820:269;11769:320;;;:::o;12095:182::-;12235:34;12231:1;12223:6;12219:14;12212:58;12095:182;:::o;12283:366::-;12425:3;12446:67;12510:2;12505:3;12446:67;:::i;:::-;12439:74;;12522:93;12611:3;12522:93;:::i;:::-;12640:2;12635:3;12631:12;12624:19;;12283:366;;;:::o;12655:419::-;12821:4;12859:2;12848:9;12844:18;12836:26;;12908:9;12902:4;12898:20;12894:1;12883:9;12879:17;12872:47;12936:131;13062:4;12936:131;:::i;:::-;12928:139;;12655:419;;;:::o;13080:180::-;13128:77;13125:1;13118:88;13225:4;13222:1;13215:15;13249:4;13246:1;13239:15;13266:348;13306:7;13329:20;13347:1;13329:20;:::i;:::-;13324:25;;13363:20;13381:1;13363:20;:::i;:::-;13358:25;;13551:1;13483:66;13479:74;13476:1;13473:81;13468:1;13461:9;13454:17;13450:105;13447:131;;;13558:18;;:::i;:::-;13447:131;13606:1;13603;13599:9;13588:20;;13266:348;;;;:::o;13620:180::-;13668:77;13665:1;13658:88;13765:4;13762:1;13755:15;13789:4;13786:1;13779:15;13806:185;13846:1;13863:20;13881:1;13863:20;:::i;:::-;13858:25;;13897:20;13915:1;13897:20;:::i;:::-;13892:25;;13936:1;13926:35;;13941:18;;:::i;:::-;13926:35;13983:1;13980;13976:9;13971:14;;13806:185;;;;:::o;13997:234::-;14137:34;14133:1;14125:6;14121:14;14114:58;14206:17;14201:2;14193:6;14189:15;14182:42;13997:234;:::o;14237:366::-;14379:3;14400:67;14464:2;14459:3;14400:67;:::i;:::-;14393:74;;14476:93;14565:3;14476:93;:::i;:::-;14594:2;14589:3;14585:12;14578:19;;14237:366;;;:::o;14609:419::-;14775:4;14813:2;14802:9;14798:18;14790:26;;14862:9;14856:4;14852:20;14848:1;14837:9;14833:17;14826:47;14890:131;15016:4;14890:131;:::i;:::-;14882:139;;14609:419;;;:::o;15034:227::-;15174:34;15170:1;15162:6;15158:14;15151:58;15243:10;15238:2;15230:6;15226:15;15219:35;15034:227;:::o;15267:366::-;15409:3;15430:67;15494:2;15489:3;15430:67;:::i;:::-;15423:74;;15506:93;15595:3;15506:93;:::i;:::-;15624:2;15619:3;15615:12;15608:19;;15267:366;;;:::o;15639:419::-;15805:4;15843:2;15832:9;15828:18;15820:26;;15892:9;15886:4;15882:20;15878:1;15867:9;15863:17;15856:47;15920:131;16046:4;15920:131;:::i;:::-;15912:139;;15639:419;;;:::o;16064:305::-;16104:3;16123:20;16141:1;16123:20;:::i;:::-;16118:25;;16157:20;16175:1;16157:20;:::i;:::-;16152:25;;16311:1;16243:66;16239:74;16236:1;16233:81;16230:107;;;16317:18;;:::i;:::-;16230:107;16361:1;16358;16354:9;16347:16;;16064:305;;;;:::o;16375:180::-;16423:77;16420:1;16413:88;16520:4;16517:1;16510:15;16544:4;16541:1;16534:15;16561:233;16600:3;16623:24;16641:5;16623:24;:::i;:::-;16614:33;;16669:66;16662:5;16659:77;16656:103;;;16739:18;;:::i;:::-;16656:103;16786:1;16779:5;16775:13;16768:20;;16561:233;;;:::o;16800:179::-;16940:31;16936:1;16928:6;16924:14;16917:55;16800:179;:::o;16985:366::-;17127:3;17148:67;17212:2;17207:3;17148:67;:::i;:::-;17141:74;;17224:93;17313:3;17224:93;:::i;:::-;17342:2;17337:3;17333:12;17326:19;;16985:366;;;:::o;17357:419::-;17523:4;17561:2;17550:9;17546:18;17538:26;;17610:9;17604:4;17600:20;17596:1;17585:9;17581:17;17574:47;17638:131;17764:4;17638:131;:::i;:::-;17630:139;;17357:419;;;:::o;17782:244::-;17922:34;17918:1;17910:6;17906:14;17899:58;17991:27;17986:2;17978:6;17974:15;17967:52;17782:244;:::o;18032:366::-;18174:3;18195:67;18259:2;18254:3;18195:67;:::i;:::-;18188:74;;18271:93;18360:3;18271:93;:::i;:::-;18389:2;18384:3;18380:12;18373:19;;18032:366;;;:::o;18404:419::-;18570:4;18608:2;18597:9;18593:18;18585:26;;18657:9;18651:4;18647:20;18643:1;18632:9;18628:17;18621:47;18685:131;18811:4;18685:131;:::i;:::-;18677:139;;18404:419;;;:::o;18829:224::-;18969:34;18965:1;18957:6;18953:14;18946:58;19038:7;19033:2;19025:6;19021:15;19014:32;18829:224;:::o;19059:366::-;19201:3;19222:67;19286:2;19281:3;19222:67;:::i;:::-;19215:74;;19298:93;19387:3;19298:93;:::i;:::-;19416:2;19411:3;19407:12;19400:19;;19059:366;;;:::o;19431:419::-;19597:4;19635:2;19624:9;19620:18;19612:26;;19684:9;19678:4;19674:20;19670:1;19659:9;19655:17;19648:47;19712:131;19838:4;19712:131;:::i;:::-;19704:139;;19431:419;;;:::o;19856:179::-;19996:31;19992:1;19984:6;19980:14;19973:55;19856:179;:::o;20041:366::-;20183:3;20204:67;20268:2;20263:3;20204:67;:::i;:::-;20197:74;;20280:93;20369:3;20280:93;:::i;:::-;20398:2;20393:3;20389:12;20382:19;;20041:366;;;:::o;20413:419::-;20579:4;20617:2;20606:9;20602:18;20594:26;;20666:9;20660:4;20656:20;20652:1;20641:9;20637:17;20630:47;20694:131;20820:4;20694:131;:::i;:::-;20686:139;;20413:419;;;:::o;20838:223::-;20978:34;20974:1;20966:6;20962:14;20955:58;21047:6;21042:2;21034:6;21030:15;21023:31;20838:223;:::o;21067:366::-;21209:3;21230:67;21294:2;21289:3;21230:67;:::i;:::-;21223:74;;21306:93;21395:3;21306:93;:::i;:::-;21424:2;21419:3;21415:12;21408:19;;21067:366;;;:::o;21439:419::-;21605:4;21643:2;21632:9;21628:18;21620:26;;21692:9;21686:4;21682:20;21678:1;21667:9;21663:17;21656:47;21720:131;21846:4;21720:131;:::i;:::-;21712:139;;21439:419;;;:::o;21864:240::-;22004:34;22000:1;21992:6;21988:14;21981:58;22073:23;22068:2;22060:6;22056:15;22049:48;21864:240;:::o;22110:366::-;22252:3;22273:67;22337:2;22332:3;22273:67;:::i;:::-;22266:74;;22349:93;22438:3;22349:93;:::i;:::-;22467:2;22462:3;22458:12;22451:19;;22110:366;;;:::o;22482:419::-;22648:4;22686:2;22675:9;22671:18;22663:26;;22735:9;22729:4;22725:20;22721:1;22710:9;22706:17;22699:47;22763:131;22889:4;22763:131;:::i;:::-;22755:139;;22482:419;;;:::o;22907:239::-;23047:34;23043:1;23035:6;23031:14;23024:58;23116:22;23111:2;23103:6;23099:15;23092:47;22907:239;:::o;23152:366::-;23294:3;23315:67;23379:2;23374:3;23315:67;:::i;:::-;23308:74;;23391:93;23480:3;23391:93;:::i;:::-;23509:2;23504:3;23500:12;23493:19;;23152:366;;;:::o;23524:419::-;23690:4;23728:2;23717:9;23713:18;23705:26;;23777:9;23771:4;23767:20;23763:1;23752:9;23748:17;23741:47;23805:131;23931:4;23805:131;:::i;:::-;23797:139;;23524:419;;;:::o;23949:225::-;24089:34;24085:1;24077:6;24073:14;24066:58;24158:8;24153:2;24145:6;24141:15;24134:33;23949:225;:::o;24180:366::-;24322:3;24343:67;24407:2;24402:3;24343:67;:::i;:::-;24336:74;;24419:93;24508:3;24419:93;:::i;:::-;24537:2;24532:3;24528:12;24521:19;;24180:366;;;:::o;24552:419::-;24718:4;24756:2;24745:9;24741:18;24733:26;;24805:9;24799:4;24795:20;24791:1;24780:9;24776:17;24769:47;24833:131;24959:4;24833:131;:::i;:::-;24825:139;;24552:419;;;:::o;24977:223::-;25117:34;25113:1;25105:6;25101:14;25094:58;25186:6;25181:2;25173:6;25169:15;25162:31;24977:223;:::o;25206:366::-;25348:3;25369:67;25433:2;25428:3;25369:67;:::i;:::-;25362:74;;25445:93;25534:3;25445:93;:::i;:::-;25563:2;25558:3;25554:12;25547:19;;25206:366;;;:::o;25578:419::-;25744:4;25782:2;25771:9;25767:18;25759:26;;25831:9;25825:4;25821:20;25817:1;25806:9;25802:17;25795:47;25859:131;25985:4;25859:131;:::i;:::-;25851:139;;25578:419;;;:::o;26003:221::-;26143:34;26139:1;26131:6;26127:14;26120:58;26212:4;26207:2;26199:6;26195:15;26188:29;26003:221;:::o;26230:366::-;26372:3;26393:67;26457:2;26452:3;26393:67;:::i;:::-;26386:74;;26469:93;26558:3;26469:93;:::i;:::-;26587:2;26582:3;26578:12;26571:19;;26230:366;;;:::o;26602:419::-;26768:4;26806:2;26795:9;26791:18;26783:26;;26855:9;26849:4;26845:20;26841:1;26830:9;26826:17;26819:47;26883:131;27009:4;26883:131;:::i;:::-;26875:139;;26602:419;;;:::o;27027:224::-;27167:34;27163:1;27155:6;27151:14;27144:58;27236:7;27231:2;27223:6;27219:15;27212:32;27027:224;:::o;27257:366::-;27399:3;27420:67;27484:2;27479:3;27420:67;:::i;:::-;27413:74;;27496:93;27585:3;27496:93;:::i;:::-;27614:2;27609:3;27605:12;27598:19;;27257:366;;;:::o;27629:419::-;27795:4;27833:2;27822:9;27818:18;27810:26;;27882:9;27876:4;27872:20;27868:1;27857:9;27853:17;27846:47;27910:131;28036:4;27910:131;:::i;:::-;27902:139;;27629:419;;;:::o;28054:222::-;28194:34;28190:1;28182:6;28178:14;28171:58;28263:5;28258:2;28250:6;28246:15;28239:30;28054:222;:::o;28282:366::-;28424:3;28445:67;28509:2;28504:3;28445:67;:::i;:::-;28438:74;;28521:93;28610:3;28521:93;:::i;:::-;28639:2;28634:3;28630:12;28623:19;;28282:366;;;:::o;28654:419::-;28820:4;28858:2;28847:9;28843:18;28835:26;;28907:9;28901:4;28897:20;28893:1;28882:9;28878:17;28871:47;28935:131;29061:4;28935:131;:::i;:::-;28927:139;;28654:419;;;:::o;29079:305::-;29219:34;29215:1;29207:6;29203:14;29196:58;29288:34;29283:2;29275:6;29271:15;29264:59;29357:19;29352:2;29344:6;29340:15;29333:44;29079:305;:::o;29390:366::-;29532:3;29553:67;29617:2;29612:3;29553:67;:::i;:::-;29546:74;;29629:93;29718:3;29629:93;:::i;:::-;29747:2;29742:3;29738:12;29731:19;;29390:366;;;:::o;29762:419::-;29928:4;29966:2;29955:9;29951:18;29943:26;;30015:9;30009:4;30005:20;30001:1;29990:9;29986:17;29979:47;30043:131;30169:4;30043:131;:::i;:::-;30035:139;;29762:419;;;:::o;30187:172::-;30327:24;30323:1;30315:6;30311:14;30304:48;30187:172;:::o;30365:366::-;30507:3;30528:67;30592:2;30587:3;30528:67;:::i;:::-;30521:74;;30604:93;30693:3;30604:93;:::i;:::-;30722:2;30717:3;30713:12;30706:19;;30365:366;;;:::o;30737:419::-;30903:4;30941:2;30930:9;30926:18;30918:26;;30990:9;30984:4;30980:20;30976:1;30965:9;30961:17;30954:47;31018:131;31144:4;31018:131;:::i;:::-;31010:139;;30737:419;;;:::o;31162:297::-;31302:34;31298:1;31290:6;31286:14;31279:58;31371:34;31366:2;31358:6;31354:15;31347:59;31440:11;31435:2;31427:6;31423:15;31416:36;31162:297;:::o;31465:366::-;31607:3;31628:67;31692:2;31687:3;31628:67;:::i;:::-;31621:74;;31704:93;31793:3;31704:93;:::i;:::-;31822:2;31817:3;31813:12;31806:19;;31465:366;;;:::o;31837:419::-;32003:4;32041:2;32030:9;32026:18;32018:26;;32090:9;32084:4;32080:20;32076:1;32065:9;32061:17;32054:47;32118:131;32244:4;32118:131;:::i;:::-;32110:139;;31837:419;;;:::o;32262:240::-;32402:34;32398:1;32390:6;32386:14;32379:58;32471:23;32466:2;32458:6;32454:15;32447:48;32262:240;:::o;32508:366::-;32650:3;32671:67;32735:2;32730:3;32671:67;:::i;:::-;32664:74;;32747:93;32836:3;32747:93;:::i;:::-;32865:2;32860:3;32856:12;32849:19;;32508:366;;;:::o;32880:419::-;33046:4;33084:2;33073:9;33069:18;33061:26;;33133:9;33127:4;33123:20;33119:1;33108:9;33104:17;33097:47;33161:131;33287:4;33161:131;:::i;:::-;33153:139;;32880:419;;;:::o;33305:169::-;33445:21;33441:1;33433:6;33429:14;33422:45;33305:169;:::o;33480:366::-;33622:3;33643:67;33707:2;33702:3;33643:67;:::i;:::-;33636:74;;33719:93;33808:3;33719:93;:::i;:::-;33837:2;33832:3;33828:12;33821:19;;33480:366;;;:::o;33852:419::-;34018:4;34056:2;34045:9;34041:18;34033:26;;34105:9;34099:4;34095:20;34091:1;34080:9;34076:17;34069:47;34133:131;34259:4;34133:131;:::i;:::-;34125:139;;33852:419;;;:::o;34277:241::-;34417:34;34413:1;34405:6;34401:14;34394:58;34486:24;34481:2;34473:6;34469:15;34462:49;34277:241;:::o;34524:366::-;34666:3;34687:67;34751:2;34746:3;34687:67;:::i;:::-;34680:74;;34763:93;34852:3;34763:93;:::i;:::-;34881:2;34876:3;34872:12;34865:19;;34524:366;;;:::o;34896:419::-;35062:4;35100:2;35089:9;35085:18;35077:26;;35149:9;35143:4;35139:20;35135:1;35124:9;35120:17;35113:47;35177:131;35303:4;35177:131;:::i;:::-;35169:139;;34896:419;;;:::o;35321:191::-;35361:4;35381:20;35399:1;35381:20;:::i;:::-;35376:25;;35415:20;35433:1;35415:20;:::i;:::-;35410:25;;35454:1;35451;35448:8;35445:34;;;35459:18;;:::i;:::-;35445:34;35504:1;35501;35497:9;35489:17;;35321:191;;;;:::o;35518:225::-;35658:34;35654:1;35646:6;35642:14;35635:58;35727:8;35722:2;35714:6;35710:15;35703:33;35518:225;:::o;35749:366::-;35891:3;35912:67;35976:2;35971:3;35912:67;:::i;:::-;35905:74;;35988:93;36077:3;35988:93;:::i;:::-;36106:2;36101:3;36097:12;36090:19;;35749:366;;;:::o;36121:419::-;36287:4;36325:2;36314:9;36310:18;36302:26;;36374:9;36368:4;36364:20;36360:1;36349:9;36345:17;36338:47;36402:131;36528:4;36402:131;:::i;:::-;36394:139;;36121:419;;;:::o;36546:147::-;36647:11;36684:3;36669:18;;36546:147;;;;:::o;36699:114::-;;:::o;36819:398::-;36978:3;36999:83;37080:1;37075:3;36999:83;:::i;:::-;36992:90;;37091:93;37180:3;37091:93;:::i;:::-;37209:1;37204:3;37200:11;37193:18;;36819:398;;;:::o;37223:379::-;37407:3;37429:147;37572:3;37429:147;:::i;:::-;37422:154;;37593:3;37586:10;;37223:379;;;:::o;37608:442::-;37757:4;37795:2;37784:9;37780:18;37772:26;;37808:71;37876:1;37865:9;37861:17;37852:6;37808:71;:::i;:::-;37889:72;37957:2;37946:9;37942:18;37933:6;37889:72;:::i;:::-;37971;38039:2;38028:9;38024:18;38015:6;37971:72;:::i;:::-;37608:442;;;;;;:::o;38056:143::-;38113:5;38144:6;38138:13;38129:22;;38160:33;38187:5;38160:33;:::i;:::-;38056:143;;;;:::o;38205:351::-;38275:6;38324:2;38312:9;38303:7;38299:23;38295:32;38292:119;;;38330:79;;:::i;:::-;38292:119;38450:1;38475:64;38531:7;38522:6;38511:9;38507:22;38475:64;:::i;:::-;38465:74;;38421:128;38205:351;;;;:::o;38562:85::-;38607:7;38636:5;38625:16;;38562:85;;;:::o;38653:158::-;38711:9;38744:61;38762:42;38771:32;38797:5;38771:32;:::i;:::-;38762:42;:::i;:::-;38744:61;:::i;:::-;38731:74;;38653:158;;;:::o;38817:147::-;38912:45;38951:5;38912:45;:::i;:::-;38907:3;38900:58;38817:147;;:::o;38970:114::-;39037:6;39071:5;39065:12;39055:22;;38970:114;;;:::o;39090:184::-;39189:11;39223:6;39218:3;39211:19;39263:4;39258:3;39254:14;39239:29;;39090:184;;;;:::o;39280:132::-;39347:4;39370:3;39362:11;;39400:4;39395:3;39391:14;39383:22;;39280:132;;;:::o;39418:108::-;39495:24;39513:5;39495:24;:::i;:::-;39490:3;39483:37;39418:108;;:::o;39532:179::-;39601:10;39622:46;39664:3;39656:6;39622:46;:::i;:::-;39700:4;39695:3;39691:14;39677:28;;39532:179;;;;:::o;39717:113::-;39787:4;39819;39814:3;39810:14;39802:22;;39717:113;;;:::o;39866:732::-;39985:3;40014:54;40062:5;40014:54;:::i;:::-;40084:86;40163:6;40158:3;40084:86;:::i;:::-;40077:93;;40194:56;40244:5;40194:56;:::i;:::-;40273:7;40304:1;40289:284;40314:6;40311:1;40308:13;40289:284;;;40390:6;40384:13;40417:63;40476:3;40461:13;40417:63;:::i;:::-;40410:70;;40503:60;40556:6;40503:60;:::i;:::-;40493:70;;40349:224;40336:1;40333;40329:9;40324:14;;40289:284;;;40293:14;40589:3;40582:10;;39990:608;;;39866:732;;;;:::o;40604:831::-;40867:4;40905:3;40894:9;40890:19;40882:27;;40919:71;40987:1;40976:9;40972:17;40963:6;40919:71;:::i;:::-;41000:80;41076:2;41065:9;41061:18;41052:6;41000:80;:::i;:::-;41127:9;41121:4;41117:20;41112:2;41101:9;41097:18;41090:48;41155:108;41258:4;41249:6;41155:108;:::i;:::-;41147:116;;41273:72;41341:2;41330:9;41326:18;41317:6;41273:72;:::i;:::-;41355:73;41423:3;41412:9;41408:19;41399:6;41355:73;:::i;:::-;40604:831;;;;;;;;:::o;41441:807::-;41690:4;41728:3;41717:9;41713:19;41705:27;;41742:71;41810:1;41799:9;41795:17;41786:6;41742:71;:::i;:::-;41823:72;41891:2;41880:9;41876:18;41867:6;41823:72;:::i;:::-;41905:80;41981:2;41970:9;41966:18;41957:6;41905:80;:::i;:::-;41995;42071:2;42060:9;42056:18;42047:6;41995:80;:::i;:::-;42085:73;42153:3;42142:9;42138:19;42129:6;42085:73;:::i;:::-;42168;42236:3;42225:9;42221:19;42212:6;42168:73;:::i;:::-;41441:807;;;;;;;;;:::o;42254:143::-;42311:5;42342:6;42336:13;42327:22;;42358:33;42385:5;42358:33;:::i;:::-;42254:143;;;;:::o;42403:663::-;42491:6;42499;42507;42556:2;42544:9;42535:7;42531:23;42527:32;42524:119;;;42562:79;;:::i;:::-;42524:119;42682:1;42707:64;42763:7;42754:6;42743:9;42739:22;42707:64;:::i;:::-;42697:74;;42653:128;42820:2;42846:64;42902:7;42893:6;42882:9;42878:22;42846:64;:::i;:::-;42836:74;;42791:129;42959:2;42985:64;43041:7;43032:6;43021:9;43017:22;42985:64;:::i;:::-;42975:74;;42930:129;42403:663;;;;;:::o
Swarm Source
ipfs://74a3bd20f1c5091a59dcbc73dfa339f57db939ae7ea4374582bd145fc758a1d6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.