ERC-20
Overview
Max Total Supply
100,000,000 北海道
Holders
30
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000017187501 北海道Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AINU
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-24 */ /* // https://medium.com/@AINUJPN */ // SPDX-License-Identifier: MIT pragma solidity 0.8.15; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; 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); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } 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 { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); 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); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(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); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(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 {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) {int256 c = a * b;require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));require((b == 0) || (c / b == a));return c;} function div(int256 a, int256 b) internal pure returns (int256) {require(b != -1 || a != MIN_INT256);return a / b;} function sub(int256 a, int256 b) internal pure returns (int256) {int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a));return c;} function add(int256 a, int256 b) internal pure returns (int256) {int256 c = a + b;require((b >= 0 && c >= a) || (b < 0 && c < a));return c;} function abs(int256 a) internal pure returns (int256) {require(a != MIN_INT256);return a < 0 ? -a : a;} function toUint256Safe(int256 a) internal pure returns (uint256) {require(a >= 0); return uint256(a);} } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract AINU is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public tokenDevelopmentAddress; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevelopmentFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevelopmentFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDevelopment; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event DevelopmentWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event BuyBackTriggered(uint256 amount); event OwnerForcedSwapBack(uint256 timestamp); constructor() ERC20("AINU", unicode"北海道") { 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 = 3; uint256 _buyLiquidityFee = 0; uint256 _buyDevelopmentFee = 0; uint256 _sellMarketingFee = 3; uint256 _sellLiquidityFee = 0; uint256 _sellDevelopmentFee = 0; uint256 totalSupply = 1 * 1e8 * 1e18; maxWallet = totalSupply * 1 / 100; // 3% Max wallet maxTransactionAmount = totalSupply * 1 / 100; // 2% maxTransactionAmountTxn swapTokensAtAmount = totalSupply * 15 / 10000; // 0.15% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevelopmentFee = _buyDevelopmentFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevelopmentFee = _sellDevelopmentFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee; marketingWallet = address(msg.sender); tokenDevelopmentAddress = address(msg.sender); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable { } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; transferDelayEnabled = false; return true; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevelopmentFee) external onlyOwner {//TG buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevelopmentFee = _DevelopmentFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee; require(buyTotalFees <= 6, "Must keep fees at 6% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevelopmentFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevelopmentFee = _DevelopmentFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee; require(sellTotalFees <= 100, "Must keep fees at 100% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } 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; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDevelopment += fees * sellDevelopmentFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDevelopment += fees * buyDevelopmentFee / 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 { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance >= swapTokensAtAmount * 10){ contractBalance = swapTokensAtAmount * 10; } 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 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDevelopment = 0; (bool success,) = address(tokenDevelopmentAddress).call{value: ethForDevelopment}(""); 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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevelopmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"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":"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":"buyDevelopmentFee","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDevelopmentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","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":"_DevelopmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevelopmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600481526020017f41494e55000000000000000000000000000000000000000000000000000000008152506040518060400160405280600981526020017fe58c97e6b5b7e9819300000000000000000000000000000000000000000000008152508160039081620000fb919062000dca565b5080600490816200010d919062000dca565b5050506000620001226200061d60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200062560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000f1b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000f1b565b6040518363ffffffff1660e01b81526004016200034092919062000f5e565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000f1b565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200062560201b60201c565b620003e360a05160016200072260201b60201c565b60006003905060008060006003905060008060006a52b7d2dcc80cd2e40000009050606460018262000416919062000fba565b6200042291906200104a565b600a81905550606460018262000439919062000fba565b6200044591906200104a565b600881905550612710600f826200045d919062000fba565b6200046991906200104a565b60098190555086600f819055508560108190555084601181905550601154601054600f5462000499919062001082565b620004a5919062001082565b600e81905550836013819055508260148190555081601581905550601554601454601354620004d5919062001082565b620004e1919062001082565b60128190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200058b6200057d620007c360201b60201c565b6001620007ed60201b60201c565b6200059e306001620007ed60201b60201c565b620005b361dead6001620007ed60201b60201c565b620005d5620005c7620007c360201b60201c565b60016200062560201b60201c565b620005e83060016200062560201b60201c565b620005fd61dead60016200062560201b60201c565b6200060f33826200093a60201b60201c565b5050505050505050620012ae565b600033905090565b620006356200061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006be9062001140565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007fd6200061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200088f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008869062001140565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200092e91906200117f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a390620011ec565b60405180910390fd5b620009c06000838362000ae860201b60201c565b620009dc8160025462000aed60201b62001cdf1790919060201c565b60028190555062000a3a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000aed60201b62001cdf1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000adc91906200121f565b60405180910390a35050565b505050565b600080828462000afe919062001082565b90508381101562000b46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3d906200128c565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bd257607f821691505b60208210810362000be85762000be762000b8a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c13565b62000c5e868362000c13565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cab62000ca562000c9f8462000c76565b62000c80565b62000c76565b9050919050565b6000819050919050565b62000cc78362000c8a565b62000cdf62000cd68262000cb2565b84845462000c20565b825550505050565b600090565b62000cf662000ce7565b62000d0381848462000cbc565b505050565b5b8181101562000d2b5762000d1f60008262000cec565b60018101905062000d09565b5050565b601f82111562000d7a5762000d448162000bee565b62000d4f8462000c03565b8101602085101562000d5f578190505b62000d7762000d6e8562000c03565b83018262000d08565b50505b505050565b600082821c905092915050565b600062000d9f6000198460080262000d7f565b1980831691505092915050565b600062000dba838362000d8c565b9150826002028217905092915050565b62000dd58262000b50565b67ffffffffffffffff81111562000df15762000df062000b5b565b5b62000dfd825462000bb9565b62000e0a82828562000d2f565b600060209050601f83116001811462000e42576000841562000e2d578287015190505b62000e39858262000dac565b86555062000ea9565b601f19841662000e528662000bee565b60005b8281101562000e7c5784890151825560018201915060208501945060208101905062000e55565b8683101562000e9c578489015162000e98601f89168262000d8c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ee38262000eb6565b9050919050565b62000ef58162000ed6565b811462000f0157600080fd5b50565b60008151905062000f158162000eea565b92915050565b60006020828403121562000f345762000f3362000eb1565b5b600062000f448482850162000f04565b91505092915050565b62000f588162000ed6565b82525050565b600060408201905062000f75600083018562000f4d565b62000f84602083018462000f4d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fc78262000c76565b915062000fd48362000c76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001010576200100f62000f8b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010578262000c76565b9150620010648362000c76565b9250826200107757620010766200101b565b5b828204905092915050565b60006200108f8262000c76565b91506200109c8362000c76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010d457620010d362000f8b565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001128602083620010df565b91506200113582620010f0565b602082019050919050565b600060208201905081810360008301526200115b8162001119565b9050919050565b60008115159050919050565b620011798162001162565b82525050565b60006020820190506200119660008301846200116e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011d4601f83620010df565b9150620011e1826200119c565b602082019050919050565b600060208201905081810360008301526200120781620011c5565b9050919050565b620012198162000c76565b82525050565b60006020820190506200123660008301846200120e565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001274601b83620010df565b915062001281826200123c565b602082019050919050565b60006020820190508181036000830152620012a78162001265565b9050919050565b60805160a0516148436200130c60003960008181610de00152818161155c01526122c3015260008181610c050152818161226b0152818161338e0152818161346f0152818161349601528181613532015261355901526148436000f3fe6080604052600436106102975760003560e01c80638a8c523c1161015a578063c876d0b9116100c1578063e884f2601161007a578063e884f26014610a33578063ef8700e514610a5e578063f11a24d314610a89578063f2fde38b14610ab4578063f637434214610add578063f8b45b0514610b085761029e565b8063c876d0b91461091f578063c8c8ebe41461094a578063d85ba06314610975578063da641921146109a0578063dd62ed3e146109cb578063e2f4560514610a085761029e565b8063a9059cbb11610113578063a9059cbb146107fd578063b20414111461083a578063b62496f514610865578063bbc0c742146108a2578063c0246668146108cd578063c17b5b8c146108f65761029e565b80638a8c523c146106ff5780638da5cb5b14610716578063921369131461074157806395d89b411461076c5780639a7a23d614610797578063a457c2d7146107c05761029e565b806349bd5a5e116101fe578063715018a6116101b7578063715018a614610615578063751039fc1461062c5780637571336a1461065757806375f0a874146106805780637bce5a04146106ab5780638095d564146106d65761029e565b806349bd5a5e146104ef5780634a62bb651461051a5780634fbee193146105455780636a486a8e146105825780636ddd1713146105ad57806370a08231146105d85761029e565b80631a8145bb116102505780631a8145bb146103c95780631f3fed8f146103f457806323b872dd1461041f57806327c8f8351461045c578063313ce5671461048757806339509351146104b25761029e565b806306fdde03146102a3578063095ea7b3146102ce57806310d5de531461030b5780631694505e1461034857806318160ddd1461037357806318a94cf11461039e5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b33565b6040516102c59190613709565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906137c4565b610bc5565b604051610302919061381f565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d919061383a565b610be3565b60405161033f919061381f565b60405180910390f35b34801561035457600080fd5b5061035d610c03565b60405161036a91906138c6565b60405180910390f35b34801561037f57600080fd5b50610388610c27565b60405161039591906138f0565b60405180910390f35b3480156103aa57600080fd5b506103b3610c31565b6040516103c091906138f0565b60405180910390f35b3480156103d557600080fd5b506103de610c37565b6040516103eb91906138f0565b60405180910390f35b34801561040057600080fd5b50610409610c3d565b60405161041691906138f0565b60405180910390f35b34801561042b57600080fd5b506104466004803603810190610441919061390b565b610c43565b604051610453919061381f565b60405180910390f35b34801561046857600080fd5b50610471610d1c565b60405161047e919061396d565b60405180910390f35b34801561049357600080fd5b5061049c610d22565b6040516104a991906139a4565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906137c4565b610d2b565b6040516104e6919061381f565b60405180910390f35b3480156104fb57600080fd5b50610504610dde565b604051610511919061396d565b60405180910390f35b34801561052657600080fd5b5061052f610e02565b60405161053c919061381f565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061383a565b610e15565b604051610579919061381f565b60405180910390f35b34801561058e57600080fd5b50610597610e6b565b6040516105a491906138f0565b60405180910390f35b3480156105b957600080fd5b506105c2610e71565b6040516105cf919061381f565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa919061383a565b610e84565b60405161060c91906138f0565b60405180910390f35b34801561062157600080fd5b5061062a610ecc565b005b34801561063857600080fd5b50610641611024565b60405161064e919061381f565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906139eb565b6110fa565b005b34801561068c57600080fd5b506106956111ec565b6040516106a2919061396d565b60405180910390f35b3480156106b757600080fd5b506106c0611212565b6040516106cd91906138f0565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613a2b565b611218565b005b34801561070b57600080fd5b50610714611332565b005b34801561072257600080fd5b5061072b611401565b604051610738919061396d565b60405180910390f35b34801561074d57600080fd5b5061075661142b565b60405161076391906138f0565b60405180910390f35b34801561077857600080fd5b50610781611431565b60405161078e9190613709565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b991906139eb565b6114c3565b005b3480156107cc57600080fd5b506107e760048036038101906107e291906137c4565b6115f6565b6040516107f4919061381f565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f91906137c4565b6116c3565b604051610831919061381f565b60405180910390f35b34801561084657600080fd5b5061084f6116e1565b60405161085c91906138f0565b60405180910390f35b34801561087157600080fd5b5061088c6004803603810190610887919061383a565b6116e7565b604051610899919061381f565b60405180910390f35b3480156108ae57600080fd5b506108b7611707565b6040516108c4919061381f565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906139eb565b61171a565b005b34801561090257600080fd5b5061091d60048036038101906109189190613a2b565b61185a565b005b34801561092b57600080fd5b50610934611974565b604051610941919061381f565b60405180910390f35b34801561095657600080fd5b5061095f611987565b60405161096c91906138f0565b60405180910390f35b34801561098157600080fd5b5061098a61198d565b60405161099791906138f0565b60405180910390f35b3480156109ac57600080fd5b506109b5611993565b6040516109c2919061396d565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613a7e565b6119b9565b6040516109ff91906138f0565b60405180910390f35b348015610a1457600080fd5b50610a1d611a40565b604051610a2a91906138f0565b60405180910390f35b348015610a3f57600080fd5b50610a48611a46565b604051610a55919061381f565b60405180910390f35b348015610a6a57600080fd5b50610a73611b01565b604051610a8091906138f0565b60405180910390f35b348015610a9557600080fd5b50610a9e611b07565b604051610aab91906138f0565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad6919061383a565b611b0d565b005b348015610ae957600080fd5b50610af2611cd3565b604051610aff91906138f0565b60405180910390f35b348015610b1457600080fd5b50610b1d611cd9565b604051610b2a91906138f0565b60405180910390f35b606060038054610b4290613aed565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6e90613aed565b8015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b5050505050905090565b6000610bd9610bd2611d3d565b8484611d45565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60155481565b60175481565b60165481565b6000610c50848484611f0e565b610d1184610c5c611d3d565b610d0c856040518060600160405280602881526020016147c160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc2611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b600190509392505050565b61dead81565b60006012905090565b6000610dd4610d38611d3d565b84610dcf8560016000610d49611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b611d45565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed4611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061102e611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490613b6a565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff0219169083151502179055506001905090565b611102611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613b6a565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b611220611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690613b6a565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f546112d79190613bb9565b6112e19190613bb9565b600e819055506006600e54111561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490613c5b565b60405180910390fd5b505050565b61133a611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090613b6a565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606004805461144090613aed565b80601f016020809104026020016040519081016040528092919081815260200182805461146c90613aed565b80156114b95780601f1061148e576101008083540402835291602001916114b9565b820191906000526020600020905b81548152906001019060200180831161149c57829003601f168201915b5050505050905090565b6114cb611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613b6a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90613ced565b60405180910390fd5b6115f28282612bc4565b5050565b60006116b9611603611d3d565b846116b4856040518060600160405280602581526020016147e9602591396001600061162d611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b6001905092915050565b60006116d76116d0611d3d565b8484611f0e565b6001905092915050565b60115481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611722611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a890613b6a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161184e919061381f565b60405180910390a25050565b611862611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613b6a565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546119199190613bb9565b6119239190613bb9565b6012819055506064601254111561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690613d59565b60405180910390fd5b505050565b600d60009054906101000a900460ff1681565b60085481565b600e5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611a50611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690613b6a565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b60185481565b60105481565b611b15611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613deb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b6000808284611cee9190613bb9565b905083811015611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90613e57565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613ee9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90613f7b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0191906138f0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f749061400d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe39061409f565b60405180910390fd5b600081036120055761200083836000612c65565b612b5b565b600b60009054906101000a900460ff161561268357612022611401565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120905750612060611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612103575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211c5750600560149054906101000a900460ff16155b1561268257600b60019054906101000a900460ff1661221657601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121d65750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c9061410b565b60405180910390fd5b5b600d60009054906101000a900460ff16156123de57612233611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122ba57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123dd5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f906141c3565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124815750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e357600a5461249283610e84565b8261249d9190613bb9565b11156124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d59061422f565b60405180910390fd5b612681565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125865750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125d5576008548111156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c7906142c1565b60405180910390fd5b612680565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661267f57600a5461263283610e84565b8261263d9190613bb9565b111561267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126759061422f565b60405180910390fd5b5b5b5b5b5b600061268e30610e84565b9050600060095482101590508080156126b35750600b60029054906101000a900460ff165b80156126cc5750600560149054906101000a900460ff16155b80156127225750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127785750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127ce5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612812576001600560146101000a81548160ff0219169083151502179055506127f6612ef8565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128c85750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d257600090505b60008115612b4b57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561293557506000601254115b15612a02576129626064612954601254886131dc90919063ffffffff16565b61325690919063ffffffff16565b90506012546014548261297591906142e1565b61297f919061436a565b601760008282546129909190613bb9565b92505081905550601254601554826129a891906142e1565b6129b2919061436a565b601860008282546129c39190613bb9565b92505081905550601254601354826129db91906142e1565b6129e5919061436a565b601660008282546129f69190613bb9565b92505081905550612b27565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5d57506000600e54115b15612b2657612a8a6064612a7c600e54886131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600e5460105482612a9d91906142e1565b612aa7919061436a565b60176000828254612ab89190613bb9565b92505081905550600e5460115482612ad091906142e1565b612ada919061436a565b60186000828254612aeb9190613bb9565b92505081905550600e54600f5482612b0391906142e1565b612b0d919061436a565b60166000828254612b1e9190613bb9565b925050819055505b5b6000811115612b3c57612b3b873083612c65565b5b8085612b48919061439b565b94505b612b56878787612c65565b505050505b505050565b6000838311158290612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f9190613709565b60405180910390fd5b5060008385612bb7919061439b565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb9061400d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3a9061409f565b60405180910390fd5b612d4e8383836132a0565b612db98160405180606001604052806026815260200161479b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612eeb91906138f0565b60405180910390a3505050565b6000612f0330610e84565b90506000601854601654601754612f1a9190613bb9565b612f249190613bb9565b90506000821480612f355750600081145b15612f415750506131da565b600a600954612f5091906142e1565b8210612f6857600a600954612f6591906142e1565b91505b600060028260175485612f7b91906142e1565b612f85919061436a565b612f8f919061436a565b90506000612fa682856132a590919063ffffffff16565b90506000479050612fb6826132ef565b6000612fcb82476132a590919063ffffffff16565b90506000612ff686612fe8601654856131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600061302187613013601854866131dc90919063ffffffff16565b61325690919063ffffffff16565b90506000818385613032919061439b565b61303c919061439b565b90506000601781905550600060168190555060006018819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161309e90614400565b60006040518083038185875af1925050503d80600081146130db576040519150601f19603f3d011682016040523d82523d6000602084013e6130e0565b606091505b505090506000881180156130f45750600082115b1561314157613103888361352c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561878360175460405161313893929190614415565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161318790614400565b60006040518083038185875af1925050503d80600081146131c4576040519150601f19603f3d011682016040523d82523d6000602084013e6131c9565b606091505b505080915050505050505050505050505b565b60008083036131ee5760009050613250565b600082846131fc91906142e1565b905082848261320b919061436a565b1461324b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613242906144be565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061360d565b905092915050565b505050565b60006132e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b60565b905092915050565b6000600267ffffffffffffffff81111561330c5761330b6144de565b5b60405190808252806020026020018201604052801561333a5781602001602082028036833780820191505090505b50905030816000815181106133525761335161450d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341b9190614551565b8160018151811061342f5761342e61450d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613494307f000000000000000000000000000000000000000000000000000000000000000084611d45565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134f6959493929190614677565b600060405180830381600087803b15801561351057600080fd5b505af1158015613524573d6000803e3d6000fd5b505050505050565b613557307f000000000000000000000000000000000000000000000000000000000000000084611d45565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135a1611401565b426040518863ffffffff1660e01b81526004016135c3969594939291906146d1565b60606040518083038185885af11580156135e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136069190614747565b5050505050565b60008083118290613654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364b9190613709565b60405180910390fd5b5060008385613663919061436a565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136aa57808201518184015260208101905061368f565b838111156136b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006136db82613670565b6136e5818561367b565b93506136f581856020860161368c565b6136fe816136bf565b840191505092915050565b6000602082019050818103600083015261372381846136d0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061375b82613730565b9050919050565b61376b81613750565b811461377657600080fd5b50565b60008135905061378881613762565b92915050565b6000819050919050565b6137a18161378e565b81146137ac57600080fd5b50565b6000813590506137be81613798565b92915050565b600080604083850312156137db576137da61372b565b5b60006137e985828601613779565b92505060206137fa858286016137af565b9150509250929050565b60008115159050919050565b61381981613804565b82525050565b60006020820190506138346000830184613810565b92915050565b6000602082840312156138505761384f61372b565b5b600061385e84828501613779565b91505092915050565b6000819050919050565b600061388c61388761388284613730565b613867565b613730565b9050919050565b600061389e82613871565b9050919050565b60006138b082613893565b9050919050565b6138c0816138a5565b82525050565b60006020820190506138db60008301846138b7565b92915050565b6138ea8161378e565b82525050565b600060208201905061390560008301846138e1565b92915050565b6000806000606084860312156139245761392361372b565b5b600061393286828701613779565b935050602061394386828701613779565b9250506040613954868287016137af565b9150509250925092565b61396781613750565b82525050565b6000602082019050613982600083018461395e565b92915050565b600060ff82169050919050565b61399e81613988565b82525050565b60006020820190506139b96000830184613995565b92915050565b6139c881613804565b81146139d357600080fd5b50565b6000813590506139e5816139bf565b92915050565b60008060408385031215613a0257613a0161372b565b5b6000613a1085828601613779565b9250506020613a21858286016139d6565b9150509250929050565b600080600060608486031215613a4457613a4361372b565b5b6000613a52868287016137af565b9350506020613a63868287016137af565b9250506040613a74868287016137af565b9150509250925092565b60008060408385031215613a9557613a9461372b565b5b6000613aa385828601613779565b9250506020613ab485828601613779565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b0557607f821691505b602082108103613b1857613b17613abe565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b5460208361367b565b9150613b5f82613b1e565b602082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bc48261378e565b9150613bcf8361378e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0457613c03613b8a565b5b828201905092915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000613c45601c8361367b565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613cd760398361367b565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000613d43601e8361367b565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dd560268361367b565b9150613de082613d79565b604082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e41601b8361367b565b9150613e4c82613e0b565b602082019050919050565b60006020820190508181036000830152613e7081613e34565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ed360248361367b565b9150613ede82613e77565b604082019050919050565b60006020820190508181036000830152613f0281613ec6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f6560228361367b565b9150613f7082613f09565b604082019050919050565b60006020820190508181036000830152613f9481613f58565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ff760258361367b565b915061400282613f9b565b604082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061408960238361367b565b91506140948261402d565b604082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140f560168361367b565b9150614100826140bf565b602082019050919050565b60006020820190508181036000830152614124816140e8565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006141ad60498361367b565b91506141b88261412b565b606082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000614219601b8361367b565b9150614224826141e3565b602082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006142ab60368361367b565b91506142b68261424f565b604082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b60006142ec8261378e565b91506142f78361378e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143305761432f613b8a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143758261378e565b91506143808361378e565b9250826143905761438f61433b565b5b828204905092915050565b60006143a68261378e565b91506143b18361378e565b9250828210156143c4576143c3613b8a565b5b828203905092915050565b600081905092915050565b50565b60006143ea6000836143cf565b91506143f5826143da565b600082019050919050565b600061440b826143dd565b9150819050919050565b600060608201905061442a60008301866138e1565b61443760208301856138e1565b61444460408301846138e1565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006144a860218361367b565b91506144b38261444c565b604082019050919050565b600060208201905081810360008301526144d78161449b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061454b81613762565b92915050565b6000602082840312156145675761456661372b565b5b60006145758482850161453c565b91505092915050565b6000819050919050565b60006145a361459e6145998461457e565b613867565b61378e565b9050919050565b6145b381614588565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ee81613750565b82525050565b600061460083836145e5565b60208301905092915050565b6000602082019050919050565b6000614624826145b9565b61462e81856145c4565b9350614639836145d5565b8060005b8381101561466a57815161465188826145f4565b975061465c8361460c565b92505060018101905061463d565b5085935050505092915050565b600060a08201905061468c60008301886138e1565b61469960208301876145aa565b81810360408301526146ab8186614619565b90506146ba606083018561395e565b6146c760808301846138e1565b9695505050505050565b600060c0820190506146e6600083018961395e565b6146f360208301886138e1565b61470060408301876145aa565b61470d60608301866145aa565b61471a608083018561395e565b61472760a08301846138e1565b979650505050505050565b60008151905061474181613798565b92915050565b6000806000606084860312156147605761475f61372b565b5b600061476e86828701614732565b935050602061477f86828701614732565b925050604061479086828701614732565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220240f5cb5eec231233f9e13defbb1df4facbeac662f04edd3dbccc8e23d74e5f264736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106102975760003560e01c80638a8c523c1161015a578063c876d0b9116100c1578063e884f2601161007a578063e884f26014610a33578063ef8700e514610a5e578063f11a24d314610a89578063f2fde38b14610ab4578063f637434214610add578063f8b45b0514610b085761029e565b8063c876d0b91461091f578063c8c8ebe41461094a578063d85ba06314610975578063da641921146109a0578063dd62ed3e146109cb578063e2f4560514610a085761029e565b8063a9059cbb11610113578063a9059cbb146107fd578063b20414111461083a578063b62496f514610865578063bbc0c742146108a2578063c0246668146108cd578063c17b5b8c146108f65761029e565b80638a8c523c146106ff5780638da5cb5b14610716578063921369131461074157806395d89b411461076c5780639a7a23d614610797578063a457c2d7146107c05761029e565b806349bd5a5e116101fe578063715018a6116101b7578063715018a614610615578063751039fc1461062c5780637571336a1461065757806375f0a874146106805780637bce5a04146106ab5780638095d564146106d65761029e565b806349bd5a5e146104ef5780634a62bb651461051a5780634fbee193146105455780636a486a8e146105825780636ddd1713146105ad57806370a08231146105d85761029e565b80631a8145bb116102505780631a8145bb146103c95780631f3fed8f146103f457806323b872dd1461041f57806327c8f8351461045c578063313ce5671461048757806339509351146104b25761029e565b806306fdde03146102a3578063095ea7b3146102ce57806310d5de531461030b5780631694505e1461034857806318160ddd1461037357806318a94cf11461039e5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b33565b6040516102c59190613709565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906137c4565b610bc5565b604051610302919061381f565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d919061383a565b610be3565b60405161033f919061381f565b60405180910390f35b34801561035457600080fd5b5061035d610c03565b60405161036a91906138c6565b60405180910390f35b34801561037f57600080fd5b50610388610c27565b60405161039591906138f0565b60405180910390f35b3480156103aa57600080fd5b506103b3610c31565b6040516103c091906138f0565b60405180910390f35b3480156103d557600080fd5b506103de610c37565b6040516103eb91906138f0565b60405180910390f35b34801561040057600080fd5b50610409610c3d565b60405161041691906138f0565b60405180910390f35b34801561042b57600080fd5b506104466004803603810190610441919061390b565b610c43565b604051610453919061381f565b60405180910390f35b34801561046857600080fd5b50610471610d1c565b60405161047e919061396d565b60405180910390f35b34801561049357600080fd5b5061049c610d22565b6040516104a991906139a4565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906137c4565b610d2b565b6040516104e6919061381f565b60405180910390f35b3480156104fb57600080fd5b50610504610dde565b604051610511919061396d565b60405180910390f35b34801561052657600080fd5b5061052f610e02565b60405161053c919061381f565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061383a565b610e15565b604051610579919061381f565b60405180910390f35b34801561058e57600080fd5b50610597610e6b565b6040516105a491906138f0565b60405180910390f35b3480156105b957600080fd5b506105c2610e71565b6040516105cf919061381f565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa919061383a565b610e84565b60405161060c91906138f0565b60405180910390f35b34801561062157600080fd5b5061062a610ecc565b005b34801561063857600080fd5b50610641611024565b60405161064e919061381f565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906139eb565b6110fa565b005b34801561068c57600080fd5b506106956111ec565b6040516106a2919061396d565b60405180910390f35b3480156106b757600080fd5b506106c0611212565b6040516106cd91906138f0565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613a2b565b611218565b005b34801561070b57600080fd5b50610714611332565b005b34801561072257600080fd5b5061072b611401565b604051610738919061396d565b60405180910390f35b34801561074d57600080fd5b5061075661142b565b60405161076391906138f0565b60405180910390f35b34801561077857600080fd5b50610781611431565b60405161078e9190613709565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b991906139eb565b6114c3565b005b3480156107cc57600080fd5b506107e760048036038101906107e291906137c4565b6115f6565b6040516107f4919061381f565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f91906137c4565b6116c3565b604051610831919061381f565b60405180910390f35b34801561084657600080fd5b5061084f6116e1565b60405161085c91906138f0565b60405180910390f35b34801561087157600080fd5b5061088c6004803603810190610887919061383a565b6116e7565b604051610899919061381f565b60405180910390f35b3480156108ae57600080fd5b506108b7611707565b6040516108c4919061381f565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906139eb565b61171a565b005b34801561090257600080fd5b5061091d60048036038101906109189190613a2b565b61185a565b005b34801561092b57600080fd5b50610934611974565b604051610941919061381f565b60405180910390f35b34801561095657600080fd5b5061095f611987565b60405161096c91906138f0565b60405180910390f35b34801561098157600080fd5b5061098a61198d565b60405161099791906138f0565b60405180910390f35b3480156109ac57600080fd5b506109b5611993565b6040516109c2919061396d565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613a7e565b6119b9565b6040516109ff91906138f0565b60405180910390f35b348015610a1457600080fd5b50610a1d611a40565b604051610a2a91906138f0565b60405180910390f35b348015610a3f57600080fd5b50610a48611a46565b604051610a55919061381f565b60405180910390f35b348015610a6a57600080fd5b50610a73611b01565b604051610a8091906138f0565b60405180910390f35b348015610a9557600080fd5b50610a9e611b07565b604051610aab91906138f0565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad6919061383a565b611b0d565b005b348015610ae957600080fd5b50610af2611cd3565b604051610aff91906138f0565b60405180910390f35b348015610b1457600080fd5b50610b1d611cd9565b604051610b2a91906138f0565b60405180910390f35b606060038054610b4290613aed565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6e90613aed565b8015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b5050505050905090565b6000610bd9610bd2611d3d565b8484611d45565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b60175481565b60165481565b6000610c50848484611f0e565b610d1184610c5c611d3d565b610d0c856040518060600160405280602881526020016147c160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc2611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b600190509392505050565b61dead81565b60006012905090565b6000610dd4610d38611d3d565b84610dcf8560016000610d49611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b611d45565b6001905092915050565b7f000000000000000000000000ccb53c45bdb4ff0996d1ec6149dfbd4c1dcbffae81565b600b60009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed4611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061102e611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490613b6a565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff0219169083151502179055506001905090565b611102611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613b6a565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b611220611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690613b6a565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f546112d79190613bb9565b6112e19190613bb9565b600e819055506006600e54111561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490613c5b565b60405180910390fd5b505050565b61133a611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090613b6a565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606004805461144090613aed565b80601f016020809104026020016040519081016040528092919081815260200182805461146c90613aed565b80156114b95780601f1061148e576101008083540402835291602001916114b9565b820191906000526020600020905b81548152906001019060200180831161149c57829003601f168201915b5050505050905090565b6114cb611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613b6a565b60405180910390fd5b7f000000000000000000000000ccb53c45bdb4ff0996d1ec6149dfbd4c1dcbffae73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90613ced565b60405180910390fd5b6115f28282612bc4565b5050565b60006116b9611603611d3d565b846116b4856040518060600160405280602581526020016147e9602591396001600061162d611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b6001905092915050565b60006116d76116d0611d3d565b8484611f0e565b6001905092915050565b60115481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611722611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a890613b6a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161184e919061381f565b60405180910390a25050565b611862611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613b6a565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546119199190613bb9565b6119239190613bb9565b6012819055506064601254111561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690613d59565b60405180910390fd5b505050565b600d60009054906101000a900460ff1681565b60085481565b600e5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611a50611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690613b6a565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b60185481565b60105481565b611b15611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613deb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b6000808284611cee9190613bb9565b905083811015611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90613e57565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613ee9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90613f7b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0191906138f0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f749061400d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe39061409f565b60405180910390fd5b600081036120055761200083836000612c65565b612b5b565b600b60009054906101000a900460ff161561268357612022611401565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120905750612060611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612103575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211c5750600560149054906101000a900460ff16155b1561268257600b60019054906101000a900460ff1661221657601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121d65750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c9061410b565b60405180910390fd5b5b600d60009054906101000a900460ff16156123de57612233611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122ba57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231257507f000000000000000000000000ccb53c45bdb4ff0996d1ec6149dfbd4c1dcbffae73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123dd5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f906141c3565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124815750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e357600a5461249283610e84565b8261249d9190613bb9565b11156124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d59061422f565b60405180910390fd5b612681565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125865750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125d5576008548111156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c7906142c1565b60405180910390fd5b612680565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661267f57600a5461263283610e84565b8261263d9190613bb9565b111561267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126759061422f565b60405180910390fd5b5b5b5b5b5b600061268e30610e84565b9050600060095482101590508080156126b35750600b60029054906101000a900460ff165b80156126cc5750600560149054906101000a900460ff16155b80156127225750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127785750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127ce5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612812576001600560146101000a81548160ff0219169083151502179055506127f6612ef8565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128c85750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d257600090505b60008115612b4b57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561293557506000601254115b15612a02576129626064612954601254886131dc90919063ffffffff16565b61325690919063ffffffff16565b90506012546014548261297591906142e1565b61297f919061436a565b601760008282546129909190613bb9565b92505081905550601254601554826129a891906142e1565b6129b2919061436a565b601860008282546129c39190613bb9565b92505081905550601254601354826129db91906142e1565b6129e5919061436a565b601660008282546129f69190613bb9565b92505081905550612b27565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5d57506000600e54115b15612b2657612a8a6064612a7c600e54886131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600e5460105482612a9d91906142e1565b612aa7919061436a565b60176000828254612ab89190613bb9565b92505081905550600e5460115482612ad091906142e1565b612ada919061436a565b60186000828254612aeb9190613bb9565b92505081905550600e54600f5482612b0391906142e1565b612b0d919061436a565b60166000828254612b1e9190613bb9565b925050819055505b5b6000811115612b3c57612b3b873083612c65565b5b8085612b48919061439b565b94505b612b56878787612c65565b505050505b505050565b6000838311158290612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f9190613709565b60405180910390fd5b5060008385612bb7919061439b565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb9061400d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3a9061409f565b60405180910390fd5b612d4e8383836132a0565b612db98160405180606001604052806026815260200161479b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612eeb91906138f0565b60405180910390a3505050565b6000612f0330610e84565b90506000601854601654601754612f1a9190613bb9565b612f249190613bb9565b90506000821480612f355750600081145b15612f415750506131da565b600a600954612f5091906142e1565b8210612f6857600a600954612f6591906142e1565b91505b600060028260175485612f7b91906142e1565b612f85919061436a565b612f8f919061436a565b90506000612fa682856132a590919063ffffffff16565b90506000479050612fb6826132ef565b6000612fcb82476132a590919063ffffffff16565b90506000612ff686612fe8601654856131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600061302187613013601854866131dc90919063ffffffff16565b61325690919063ffffffff16565b90506000818385613032919061439b565b61303c919061439b565b90506000601781905550600060168190555060006018819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161309e90614400565b60006040518083038185875af1925050503d80600081146130db576040519150601f19603f3d011682016040523d82523d6000602084013e6130e0565b606091505b505090506000881180156130f45750600082115b1561314157613103888361352c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561878360175460405161313893929190614415565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161318790614400565b60006040518083038185875af1925050503d80600081146131c4576040519150601f19603f3d011682016040523d82523d6000602084013e6131c9565b606091505b505080915050505050505050505050505b565b60008083036131ee5760009050613250565b600082846131fc91906142e1565b905082848261320b919061436a565b1461324b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613242906144be565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061360d565b905092915050565b505050565b60006132e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b60565b905092915050565b6000600267ffffffffffffffff81111561330c5761330b6144de565b5b60405190808252806020026020018201604052801561333a5781602001602082028036833780820191505090505b50905030816000815181106133525761335161450d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341b9190614551565b8160018151811061342f5761342e61450d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613494307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d45565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134f6959493929190614677565b600060405180830381600087803b15801561351057600080fd5b505af1158015613524573d6000803e3d6000fd5b505050505050565b613557307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d45565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135a1611401565b426040518863ffffffff1660e01b81526004016135c3969594939291906146d1565b60606040518083038185885af11580156135e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136069190614747565b5050505050565b60008083118290613654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364b9190613709565b60405180910390fd5b5060008385613663919061436a565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136aa57808201518184015260208101905061368f565b838111156136b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006136db82613670565b6136e5818561367b565b93506136f581856020860161368c565b6136fe816136bf565b840191505092915050565b6000602082019050818103600083015261372381846136d0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061375b82613730565b9050919050565b61376b81613750565b811461377657600080fd5b50565b60008135905061378881613762565b92915050565b6000819050919050565b6137a18161378e565b81146137ac57600080fd5b50565b6000813590506137be81613798565b92915050565b600080604083850312156137db576137da61372b565b5b60006137e985828601613779565b92505060206137fa858286016137af565b9150509250929050565b60008115159050919050565b61381981613804565b82525050565b60006020820190506138346000830184613810565b92915050565b6000602082840312156138505761384f61372b565b5b600061385e84828501613779565b91505092915050565b6000819050919050565b600061388c61388761388284613730565b613867565b613730565b9050919050565b600061389e82613871565b9050919050565b60006138b082613893565b9050919050565b6138c0816138a5565b82525050565b60006020820190506138db60008301846138b7565b92915050565b6138ea8161378e565b82525050565b600060208201905061390560008301846138e1565b92915050565b6000806000606084860312156139245761392361372b565b5b600061393286828701613779565b935050602061394386828701613779565b9250506040613954868287016137af565b9150509250925092565b61396781613750565b82525050565b6000602082019050613982600083018461395e565b92915050565b600060ff82169050919050565b61399e81613988565b82525050565b60006020820190506139b96000830184613995565b92915050565b6139c881613804565b81146139d357600080fd5b50565b6000813590506139e5816139bf565b92915050565b60008060408385031215613a0257613a0161372b565b5b6000613a1085828601613779565b9250506020613a21858286016139d6565b9150509250929050565b600080600060608486031215613a4457613a4361372b565b5b6000613a52868287016137af565b9350506020613a63868287016137af565b9250506040613a74868287016137af565b9150509250925092565b60008060408385031215613a9557613a9461372b565b5b6000613aa385828601613779565b9250506020613ab485828601613779565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b0557607f821691505b602082108103613b1857613b17613abe565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b5460208361367b565b9150613b5f82613b1e565b602082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bc48261378e565b9150613bcf8361378e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0457613c03613b8a565b5b828201905092915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000613c45601c8361367b565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613cd760398361367b565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000613d43601e8361367b565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dd560268361367b565b9150613de082613d79565b604082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e41601b8361367b565b9150613e4c82613e0b565b602082019050919050565b60006020820190508181036000830152613e7081613e34565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ed360248361367b565b9150613ede82613e77565b604082019050919050565b60006020820190508181036000830152613f0281613ec6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f6560228361367b565b9150613f7082613f09565b604082019050919050565b60006020820190508181036000830152613f9481613f58565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ff760258361367b565b915061400282613f9b565b604082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061408960238361367b565b91506140948261402d565b604082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140f560168361367b565b9150614100826140bf565b602082019050919050565b60006020820190508181036000830152614124816140e8565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006141ad60498361367b565b91506141b88261412b565b606082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000614219601b8361367b565b9150614224826141e3565b602082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006142ab60368361367b565b91506142b68261424f565b604082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b60006142ec8261378e565b91506142f78361378e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143305761432f613b8a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143758261378e565b91506143808361378e565b9250826143905761438f61433b565b5b828204905092915050565b60006143a68261378e565b91506143b18361378e565b9250828210156143c4576143c3613b8a565b5b828203905092915050565b600081905092915050565b50565b60006143ea6000836143cf565b91506143f5826143da565b600082019050919050565b600061440b826143dd565b9150819050919050565b600060608201905061442a60008301866138e1565b61443760208301856138e1565b61444460408301846138e1565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006144a860218361367b565b91506144b38261444c565b604082019050919050565b600060208201905081810360008301526144d78161449b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061454b81613762565b92915050565b6000602082840312156145675761456661372b565b5b60006145758482850161453c565b91505092915050565b6000819050919050565b60006145a361459e6145998461457e565b613867565b61378e565b9050919050565b6145b381614588565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ee81613750565b82525050565b600061460083836145e5565b60208301905092915050565b6000602082019050919050565b6000614624826145b9565b61462e81856145c4565b9350614639836145d5565b8060005b8381101561466a57815161465188826145f4565b975061465c8361460c565b92505060018101905061463d565b5085935050505092915050565b600060a08201905061468c60008301886138e1565b61469960208301876145aa565b81810360408301526146ab8186614619565b90506146ba606083018561395e565b6146c760808301846138e1565b9695505050505050565b600060c0820190506146e6600083018961395e565b6146f360208301886138e1565b61470060408301876145aa565b61470d60608301866145aa565b61471a608083018561395e565b61472760a08301846138e1565b979650505050505050565b60008151905061474181613798565b92915050565b6000806000606084860312156147605761475f61372b565b5b600061476e86828701614732565b935050602061477f86828701614732565b925050604061479086828701614732565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220240f5cb5eec231233f9e13defbb1df4facbeac662f04edd3dbccc8e23d74e5f264736f6c634300080f0033
Deployed Bytecode Sourcemap
17295:12552:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5018:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5932:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18496:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17369:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18270:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18352;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18312;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6109:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17472:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5238:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6472:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17427:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17767:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23446:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18159:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17847:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5455:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10865:148;;;;;;;;;;;;;:::i;:::-;;21497:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21810:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17564:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18044;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21966:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21377:112;;;;;;;;;;;;;:::i;:::-;;10651:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18194:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5126:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22992:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6698:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5590:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18118:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18567:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17807:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22802:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22382:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17962:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17652:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18010:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17601:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5773:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17694:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21664:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18392:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18081:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11021:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18232:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17734:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5018:100;5072:13;5105:5;5098:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5018:100;:::o;5932:169::-;6015:4;6032:39;6041:12;:10;:12::i;:::-;6055:7;6064:6;6032:8;:39::i;:::-;6089:4;6082:11;;5932:169;;;;:::o;18496:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17369:51::-;;;:::o;5339:108::-;5400:7;5427:12;;5420:19;;5339:108;:::o;18270:33::-;;;;:::o;18352:::-;;;;:::o;18312:::-;;;;:::o;6109:355::-;6249:4;6266:36;6276:6;6284:9;6295:6;6266:9;:36::i;:::-;6313:121;6322:6;6330:12;:10;:12::i;:::-;6344:89;6382:6;6344:89;;;;;;;;;;;;;;;;;:11;:19;6356:6;6344:19;;;;;;;;;;;;;;;:33;6364:12;:10;:12::i;:::-;6344:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6313:8;:121::i;:::-;6452:4;6445:11;;6109:355;;;;;:::o;17472:53::-;17518:6;17472:53;:::o;5238:93::-;5296:5;5321:2;5314:9;;5238:93;:::o;6472:218::-;6560:4;6577:83;6586:12;:10;:12::i;:::-;6600:7;6609:50;6648:10;6609:11;:25;6621:12;:10;:12::i;:::-;6609:25;;;;;;;;;;;;;;;:34;6635:7;6609:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6577:8;:83::i;:::-;6678:4;6671:11;;6472:218;;;;:::o;17427:38::-;;;:::o;17767:33::-;;;;;;;;;;;;;:::o;23446:127::-;23513:4;23537:19;:28;23557:7;23537:28;;;;;;;;;;;;;;;;;;;;;;;;;23530:35;;23446:127;;;:::o;18159:28::-;;;;:::o;17847:31::-;;;;;;;;;;;;;:::o;5455:127::-;5529:7;5556:9;:18;5566:7;5556:18;;;;;;;;;;;;;;;;5549:25;;5455:127;;;:::o;10865:148::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10972:1:::1;10935:40;;10956:6;;;;;;;;;;;10935:40;;;;;;;;;;;;11003:1;10986:6;;:19;;;;;;;;;;;;;;;;;;10865:148::o:0;21497:159::-;21549:4;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21582:5:::1;21565:14;;:22;;;;;;;;;;;;;;;;;;21621:5;21598:20;;:28;;;;;;;;;;;;;;;;;;21644:4;21637:11;;21497:159:::0;:::o;21810:144::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21942:4:::1;21900:31;:39;21932:6;21900:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21810:144:::0;;:::o;17564:30::-;;;;;;;;;;;;;:::o;18044:::-;;;;:::o;21966:404::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22113:13:::1;22095:15;:31;;;;22155:13;22137:15;:31;;;;22199:15;22179:17;:35;;;;22276:17;;22258:15;;22240;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;22225:12;:68;;;;22328:1;22312:12;;:17;;22304:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21966:404:::0;;;:::o;21377:112::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21448:4:::1;21432:13;;:20;;;;;;;;;;;;;;;;;;21477:4;21463:11;;:18;;;;;;;;;;;;;;;;;;21377:112::o:0;10651:79::-;10689:7;10716:6;;;;;;;;;;;10709:13;;10651:79;:::o;18194:31::-;;;;:::o;5126:104::-;5182:13;5215:7;5208:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5126:104;:::o;22992:246::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23101:13:::1;23093:21;;:4;:21;;::::0;23085:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23189:41;23218:4;23224:5;23189:28;:41::i;:::-;22992:246:::0;;:::o;6698:269::-;6791:4;6808:129;6817:12;:10;:12::i;:::-;6831:7;6840:96;6879:15;6840:96;;;;;;;;;;;;;;;;;:11;:25;6852:12;:10;:12::i;:::-;6840:25;;;;;;;;;;;;;;;:34;6866:7;6840:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6808:8;:129::i;:::-;6955:4;6948:11;;6698:269;;;;:::o;5590:175::-;5676:4;5693:42;5703:12;:10;:12::i;:::-;5717:9;5728:6;5693:9;:42::i;:::-;5753:4;5746:11;;5590:175;;;;:::o;18118:32::-;;;;:::o;18567:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17807:33::-;;;;;;;;;;;;;:::o;22802:182::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22918:8:::1;22887:19;:28;22907:7;22887:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22958:7;22942:34;;;22967:8;22942:34;;;;;;:::i;:::-;;;;;;;;22802:182:::0;;:::o;22382:412::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22526:13:::1;22507:16;:32;;;;22569:13;22550:16;:32;;;;22614:15;22593:18;:36;;;;22694:18;;22675:16;;22656;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;22640:13;:72;;;;22748:3;22731:13;;:20;;22723:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22382:412:::0;;;:::o;17962:39::-;;;;;;;;;;;;;:::o;17652:35::-;;;;:::o;18010:27::-;;;;:::o;17601:38::-;;;;;;;;;;;;;:::o;5773:151::-;5862:7;5889:11;:18;5901:5;5889:18;;;;;;;;;;;;;;;:27;5908:7;5889:27;;;;;;;;;;;;;;;;5882:34;;5773:151;;;;:::o;17694:33::-;;;;:::o;21664:134::-;21724:4;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21763:5:::1;21740:20;;:28;;;;;;;;;;;;;;;;;;21786:4;21779:11;;21664:134:::0;:::o;18392:35::-;;;;:::o;18081:30::-;;;;:::o;11021:244::-;10788:12;:10;:12::i;:::-;10778:22;;:6;;;;;;;;;;;:22;;;10770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11130:1:::1;11110:22;;:8;:22;;::::0;11102:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11220:8;11191:38;;11212:6;;;;;;;;;;;11191:38;;;;;;;;;;;;11249:8;11240:6;;:17;;;;;;;;;;;;;;;;;;11021:244:::0;:::o;18232:31::-;;;;:::o;17734:24::-;;;;:::o;8900:179::-;8958:7;8978:9;8994:1;8990;:5;;;;:::i;:::-;8978:17;;9019:1;9014;:6;;9006:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9070:1;9063:8;;;8900:179;;;;:::o;289:98::-;342:7;369:10;362:17;;289:98;:::o;8356:378::-;8509:1;8492:19;;:5;:19;;;8484:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8590:1;8571:21;;:7;:21;;;8563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8672:6;8642:11;:18;8654:5;8642:18;;;;;;;;;;;;;;;:27;8661:7;8642:27;;;;;;;;;;;;;;;:36;;;;8710:7;8694:32;;8703:5;8694:32;;;8719:6;8694:32;;;;;;:::i;:::-;;;;;;;;8356:378;;;:::o;23585:3714::-;23733:1;23717:18;;:4;:18;;;23709:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23810:1;23796:16;;:2;:16;;;23788:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23887:1;23877:6;:11;23874:92;;23905:28;23921:4;23927:2;23931:1;23905:15;:28::i;:::-;23948:7;;23874:92;23989:14;;;;;;;;;;;23986:1579;;;24049:7;:5;:7::i;:::-;24041:15;;:4;:15;;;;:50;;;;;24084:7;:5;:7::i;:::-;24078:13;;:2;:13;;;;24041:50;:88;;;;;24127:1;24113:16;;:2;:16;;;;24041:88;:130;;;;;24164:6;24150:21;;:2;:21;;;;24041:130;:160;;;;;24193:8;;;;;;;;;;;24192:9;24041:160;24019:1535;;;24240:13;;;;;;;;;;;24236:148;;24285:19;:25;24305:4;24285:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24314:19;:23;24334:2;24314:23;;;;;;;;;;;;;;;;;;;;;;;;;24285:52;24277:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;24236:148;24408:20;;;;;;;;;;;24404:423;;;24462:7;:5;:7::i;:::-;24456:13;;:2;:13;;;;:47;;;;;24487:15;24473:30;;:2;:30;;;;24456:47;:79;;;;;24521:13;24507:28;;:2;:28;;;;24456:79;24452:356;;;24613:12;24571:28;:39;24600:9;24571:39;;;;;;;;;;;;;;;;:54;24563:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24772:12;24730:28;:39;24759:9;24730:39;;;;;;;;;;;;;;;:54;;;;24452:356;24404:423;24896:25;:31;24922:4;24896:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;24932:31;:35;24964:2;24932:35;;;;;;;;;;;;;;;;;;;;;;;;;24931:36;24896:71;24892:647;;;25026:9;;25009:13;25019:2;25009:9;:13::i;:::-;25000:6;:22;;;;:::i;:::-;:35;;24992:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24892:647;;;25144:25;:29;25170:2;25144:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25178:31;:37;25210:4;25178:37;;;;;;;;;;;;;;;;;;;;;;;;;25177:38;25144:71;25140:399;;;25258:20;;25248:6;:30;;25240:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;25140:399;;;25384:31;:35;25416:2;25384:35;;;;;;;;;;;;;;;;;;;;;;;;;25380:159;;25478:9;;25461:13;25471:2;25461:9;:13::i;:::-;25452:6;:22;;;;:::i;:::-;:35;;25444:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25380:159;25140:399;24892:647;24019:1535;23986:1579;25579:28;25610:24;25628:4;25610:9;:24::i;:::-;25579:55;;25655:12;25694:18;;25670:20;:42;;25655:57;;25743:7;:35;;;;;25767:11;;;;;;;;;;;25743:35;:61;;;;;25796:8;;;;;;;;;;;25795:9;25743:61;:110;;;;;25822:25;:31;25848:4;25822:31;;;;;;;;;;;;;;;;;;;;;;;;;25821:32;25743:110;:153;;;;;25871:19;:25;25891:4;25871:25;;;;;;;;;;;;;;;;;;;;;;;;;25870:26;25743:153;:194;;;;;25914:19;:23;25934:2;25914:23;;;;;;;;;;;;;;;;;;;;;;;;;25913:24;25743:194;25725:338;;;25975:4;25964:8;;:15;;;;;;;;;;;;;;;;;;26008:10;:8;:10::i;:::-;26046:5;26035:8;;:16;;;;;;;;;;;;;;;;;;25725:338;26083:12;26099:8;;;;;;;;;;;26098:9;26083:24;;26123:19;:25;26143:4;26123:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26152:19;:23;26172:2;26152:23;;;;;;;;;;;;;;;;;;;;;;;;;26123:52;26120:99;;;26202:5;26192:15;;26120:99;26239:12;26269:7;26266:980;;;26310:25;:29;26336:2;26310:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26359:1;26343:13;;:17;26310:50;26306:771;;;26387:34;26417:3;26387:25;26398:13;;26387:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26380:41;;26488:13;;26469:16;;26462:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26440:18;;:61;;;;;;;:::i;:::-;;;;;;;;26572:13;;26551:18;;26544:4;:25;;;;:::i;:::-;:41;;;;:::i;:::-;26520:20;;:65;;;;;;;:::i;:::-;;;;;;;;26652:13;;26633:16;;26626:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26604:18;;:61;;;;;;;:::i;:::-;;;;;;;;26306:771;;;26717:25;:31;26743:4;26717:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26767:1;26752:12;;:16;26717:51;26714:363;;;26793:33;26822:3;26793:24;26804:12;;26793:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26786:40;;26889:12;;26871:15;;26864:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26842:18;;:59;;;;;;;:::i;:::-;;;;;;;;26971:12;;26951:17;;26944:4;:24;;;;:::i;:::-;:39;;;;:::i;:::-;26920:20;;:63;;;;;;;:::i;:::-;;;;;;;;27049:12;;27031:15;;27024:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;27002:18;;:59;;;;;;;:::i;:::-;;;;;;;;26714:363;26306:771;27115:1;27108:4;:8;27105:93;;;27140:42;27156:4;27170;27177;27140:15;:42::i;:::-;27105:93;27230:4;27220:14;;;;;:::i;:::-;;;26266:980;27258:33;27274:4;27280:2;27284:6;27258:15;:33::i;:::-;23698:3601;;;;23585:3714;;;;:::o;9231:190::-;9317:7;9350:1;9345;:6;;9353:12;9337:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9377:9;9393:1;9389;:5;;;;:::i;:::-;9377:17;;9412:1;9405:8;;;9231:190;;;;;:::o;23250:188::-;23367:5;23333:25;:31;23359:4;23333:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23424:5;23390:40;;23418:4;23390:40;;;;;;;;;;;;23250:188;;:::o;6975:569::-;7133:1;7115:20;;:6;:20;;;7107:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7217:1;7196:23;;:9;:23;;;7188:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7270:47;7291:6;7299:9;7310:6;7270:20;:47::i;:::-;7348:71;7370:6;7348:71;;;;;;;;;;;;;;;;;:9;:17;7358:6;7348:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7328:9;:17;7338:6;7328:17;;;;;;;;;;;;;;;:91;;;;7453:32;7478:6;7453:9;:20;7463:9;7453:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7430:9;:20;7440:9;7430:20;;;;;;;;;;;;;;;:55;;;;7518:9;7501:35;;7510:6;7501:35;;;7529:6;7501:35;;;;;;:::i;:::-;;;;;;;;6975:569;;;:::o;28181:1663::-;28220:23;28246:24;28264:4;28246:9;:24::i;:::-;28220:50;;28281:25;28351:20;;28330:18;;28309;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;28281:90;;28414:1;28395:15;:20;:46;;;;28440:1;28419:17;:22;28395:46;28392:60;;;28444:7;;;;28392:60;28507:2;28486:18;;:23;;;;:::i;:::-;28467:15;:42;28464:114;;28564:2;28543:18;;:23;;;;:::i;:::-;28525:41;;28464:114;28598:23;28683:1;28663:17;28642:18;;28624:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;28598:86;;28695:26;28724:36;28744:15;28724;:19;;:36;;;;:::i;:::-;28695:65;;28781:25;28809:21;28781:49;;28843:36;28860:18;28843:16;:36::i;:::-;28901:18;28922:44;28948:17;28922:21;:25;;:44;;;;:::i;:::-;28901:65;;28987:23;29013:57;29052:17;29013:34;29028:18;;29013:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;28987:83;;29081:25;29109:59;29150:17;29109:36;29124:20;;29109:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;29081:87;;29199:23;29256:17;29238:15;29225:10;:28;;;;:::i;:::-;:48;;;;:::i;:::-;29199:74;;29325:1;29304:18;:22;;;;29358:1;29337:18;:22;;;;29393:1;29370:20;:24;;;;29418:12;29443:23;;;;;;;;;;;29435:37;;29480:17;29435:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29417:85;;;29544:1;29526:15;:19;:42;;;;;29567:1;29549:15;:19;29526:42;29523:210;;;29584:46;29597:15;29614;29584:12;:46::i;:::-;29650:71;29665:18;29685:15;29702:18;;29650:71;;;;;;;;:::i;:::-;;;;;;;;29523:210;29774:15;;;;;;;;;;;29766:29;;29803:21;29766:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29753:76;;;;;28209:1635;;;;;;;;;;28181:1663;:::o;9429:246::-;9487:7;9516:1;9511;:6;9507:47;;9541:1;9534:8;;;;9507:47;9564:9;9580:1;9576;:5;;;;:::i;:::-;9564:17;;9609:1;9604;9600;:5;;;;:::i;:::-;:10;9592:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9666:1;9659:8;;;9429:246;;;;;:::o;9683:132::-;9741:7;9768:39;9772:1;9775;9768:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9761:46;;9683:132;;;;:::o;8742:125::-;;;;:::o;9087:136::-;9145:7;9172:43;9176:1;9179;9172:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9165:50;;9087:136;;;;:::o;27307:488::-;27375:21;27413:1;27399:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27375:40;;27444:4;27426;27431:1;27426:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27470:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27460:4;27465:1;27460:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27505:62;27522:4;27537:15;27555:11;27505:8;:62::i;:::-;27580:15;:66;;;27661:11;27687:1;27704:4;27731;27751:15;27580:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27362:433;27307:488;:::o;27807:366::-;27890:62;27907:4;27922:15;27940:11;27890:8;:62::i;:::-;27965:15;:31;;;28004:9;28037:4;28057:11;28083:1;28100;28117:7;:5;:7::i;:::-;28139:15;27965:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27807:366;;:::o;9823:189::-;9909:7;9941:1;9937;:5;9944:12;9929:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9968:9;9984:1;9980;:5;;;;:::i;:::-;9968:17;;10003:1;9996:8;;;9823:189;;;;;:::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;1478:117::-;1587:1;1584;1577: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:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:116::-;6636:21;6651:5;6636:21;:::i;:::-;6629:5;6626:32;6616:60;;6672:1;6669;6662:12;6616:60;6566:116;:::o;6688:133::-;6731:5;6769:6;6756:20;6747:29;;6785:30;6809:5;6785:30;:::i;:::-;6688:133;;;;:::o;6827:468::-;6892:6;6900;6949:2;6937:9;6928:7;6924:23;6920:32;6917:119;;;6955:79;;:::i;:::-;6917:119;7075:1;7100:53;7145:7;7136:6;7125:9;7121:22;7100:53;:::i;:::-;7090:63;;7046:117;7202:2;7228:50;7270:7;7261:6;7250:9;7246:22;7228:50;:::i;:::-;7218:60;;7173:115;6827:468;;;;;:::o;7301:619::-;7378:6;7386;7394;7443:2;7431:9;7422:7;7418:23;7414:32;7411:119;;;7449:79;;:::i;:::-;7411:119;7569:1;7594:53;7639:7;7630:6;7619:9;7615:22;7594:53;:::i;:::-;7584:63;;7540:117;7696:2;7722:53;7767:7;7758:6;7747:9;7743:22;7722:53;:::i;:::-;7712:63;;7667:118;7824:2;7850:53;7895:7;7886:6;7875:9;7871:22;7850:53;:::i;:::-;7840:63;;7795:118;7301:619;;;;;:::o;7926:474::-;7994:6;8002;8051:2;8039:9;8030:7;8026:23;8022:32;8019:119;;;8057:79;;:::i;:::-;8019:119;8177:1;8202:53;8247:7;8238:6;8227:9;8223:22;8202:53;:::i;:::-;8192:63;;8148:117;8304:2;8330:53;8375:7;8366:6;8355:9;8351:22;8330:53;:::i;:::-;8320:63;;8275:118;7926:474;;;;;:::o;8406:180::-;8454:77;8451:1;8444:88;8551:4;8548:1;8541:15;8575:4;8572:1;8565:15;8592:320;8636:6;8673:1;8667:4;8663:12;8653:22;;8720:1;8714:4;8710:12;8741:18;8731:81;;8797:4;8789:6;8785:17;8775:27;;8731:81;8859:2;8851:6;8848:14;8828:18;8825:38;8822:84;;8878:18;;:::i;:::-;8822:84;8643:269;8592:320;;;:::o;8918:182::-;9058:34;9054:1;9046:6;9042:14;9035:58;8918:182;:::o;9106:366::-;9248:3;9269:67;9333:2;9328:3;9269:67;:::i;:::-;9262:74;;9345:93;9434:3;9345:93;:::i;:::-;9463:2;9458:3;9454:12;9447:19;;9106:366;;;:::o;9478:419::-;9644:4;9682:2;9671:9;9667:18;9659:26;;9731:9;9725:4;9721:20;9717:1;9706:9;9702:17;9695:47;9759:131;9885:4;9759:131;:::i;:::-;9751:139;;9478:419;;;:::o;9903:180::-;9951:77;9948:1;9941:88;10048:4;10045:1;10038:15;10072:4;10069:1;10062:15;10089:305;10129:3;10148:20;10166:1;10148:20;:::i;:::-;10143:25;;10182:20;10200:1;10182:20;:::i;:::-;10177:25;;10336:1;10268:66;10264:74;10261:1;10258:81;10255:107;;;10342:18;;:::i;:::-;10255:107;10386:1;10383;10379:9;10372:16;;10089:305;;;;:::o;10400:178::-;10540:30;10536:1;10528:6;10524:14;10517:54;10400:178;:::o;10584:366::-;10726:3;10747:67;10811:2;10806:3;10747:67;:::i;:::-;10740:74;;10823:93;10912:3;10823:93;:::i;:::-;10941:2;10936:3;10932:12;10925:19;;10584:366;;;:::o;10956:419::-;11122:4;11160:2;11149:9;11145:18;11137:26;;11209:9;11203:4;11199:20;11195:1;11184:9;11180:17;11173:47;11237:131;11363:4;11237:131;:::i;:::-;11229:139;;10956:419;;;:::o;11381:244::-;11521:34;11517:1;11509:6;11505:14;11498:58;11590:27;11585:2;11577:6;11573:15;11566:52;11381:244;:::o;11631:366::-;11773:3;11794:67;11858:2;11853:3;11794:67;:::i;:::-;11787:74;;11870:93;11959:3;11870:93;:::i;:::-;11988:2;11983:3;11979:12;11972:19;;11631:366;;;:::o;12003:419::-;12169:4;12207:2;12196:9;12192:18;12184:26;;12256:9;12250:4;12246:20;12242:1;12231:9;12227:17;12220:47;12284:131;12410:4;12284:131;:::i;:::-;12276:139;;12003:419;;;:::o;12428:180::-;12568:32;12564:1;12556:6;12552:14;12545:56;12428:180;:::o;12614:366::-;12756:3;12777:67;12841:2;12836:3;12777:67;:::i;:::-;12770:74;;12853:93;12942:3;12853:93;:::i;:::-;12971:2;12966:3;12962:12;12955:19;;12614:366;;;:::o;12986:419::-;13152:4;13190:2;13179:9;13175:18;13167:26;;13239:9;13233:4;13229:20;13225:1;13214:9;13210:17;13203:47;13267:131;13393:4;13267:131;:::i;:::-;13259:139;;12986:419;;;:::o;13411:225::-;13551:34;13547:1;13539:6;13535:14;13528:58;13620:8;13615:2;13607:6;13603:15;13596:33;13411:225;:::o;13642:366::-;13784:3;13805:67;13869:2;13864:3;13805:67;:::i;:::-;13798:74;;13881:93;13970:3;13881:93;:::i;:::-;13999:2;13994:3;13990:12;13983:19;;13642:366;;;:::o;14014:419::-;14180:4;14218:2;14207:9;14203:18;14195:26;;14267:9;14261:4;14257:20;14253:1;14242:9;14238:17;14231:47;14295:131;14421:4;14295:131;:::i;:::-;14287:139;;14014:419;;;:::o;14439:177::-;14579:29;14575:1;14567:6;14563:14;14556:53;14439:177;:::o;14622:366::-;14764:3;14785:67;14849:2;14844:3;14785:67;:::i;:::-;14778:74;;14861:93;14950:3;14861:93;:::i;:::-;14979:2;14974:3;14970:12;14963:19;;14622:366;;;:::o;14994:419::-;15160:4;15198:2;15187:9;15183:18;15175:26;;15247:9;15241:4;15237:20;15233:1;15222:9;15218:17;15211:47;15275:131;15401:4;15275:131;:::i;:::-;15267:139;;14994:419;;;:::o;15419:223::-;15559:34;15555:1;15547:6;15543:14;15536:58;15628:6;15623:2;15615:6;15611:15;15604:31;15419:223;:::o;15648:366::-;15790:3;15811:67;15875:2;15870:3;15811:67;:::i;:::-;15804:74;;15887:93;15976:3;15887:93;:::i;:::-;16005:2;16000:3;15996:12;15989:19;;15648:366;;;:::o;16020:419::-;16186:4;16224:2;16213:9;16209:18;16201:26;;16273:9;16267:4;16263:20;16259:1;16248:9;16244:17;16237:47;16301:131;16427:4;16301:131;:::i;:::-;16293:139;;16020:419;;;:::o;16445:221::-;16585:34;16581:1;16573:6;16569:14;16562:58;16654:4;16649:2;16641:6;16637:15;16630:29;16445:221;:::o;16672:366::-;16814:3;16835:67;16899:2;16894:3;16835:67;:::i;:::-;16828:74;;16911:93;17000:3;16911:93;:::i;:::-;17029:2;17024:3;17020:12;17013:19;;16672:366;;;:::o;17044:419::-;17210:4;17248:2;17237:9;17233:18;17225:26;;17297:9;17291:4;17287:20;17283:1;17272:9;17268:17;17261:47;17325:131;17451:4;17325:131;:::i;:::-;17317:139;;17044:419;;;:::o;17469:224::-;17609:34;17605:1;17597:6;17593:14;17586:58;17678:7;17673:2;17665:6;17661:15;17654:32;17469:224;:::o;17699:366::-;17841:3;17862:67;17926:2;17921:3;17862:67;:::i;:::-;17855:74;;17938:93;18027:3;17938:93;:::i;:::-;18056:2;18051:3;18047:12;18040:19;;17699:366;;;:::o;18071:419::-;18237:4;18275:2;18264:9;18260:18;18252:26;;18324:9;18318:4;18314:20;18310:1;18299:9;18295:17;18288:47;18352:131;18478:4;18352:131;:::i;:::-;18344:139;;18071:419;;;:::o;18496:222::-;18636:34;18632:1;18624:6;18620:14;18613:58;18705:5;18700:2;18692:6;18688:15;18681:30;18496:222;:::o;18724:366::-;18866:3;18887:67;18951:2;18946:3;18887:67;:::i;:::-;18880:74;;18963:93;19052:3;18963:93;:::i;:::-;19081:2;19076:3;19072:12;19065:19;;18724:366;;;:::o;19096:419::-;19262:4;19300:2;19289:9;19285:18;19277:26;;19349:9;19343:4;19339:20;19335:1;19324:9;19320:17;19313:47;19377:131;19503:4;19377:131;:::i;:::-;19369:139;;19096:419;;;:::o;19521:172::-;19661:24;19657:1;19649:6;19645:14;19638:48;19521:172;:::o;19699:366::-;19841:3;19862:67;19926:2;19921:3;19862:67;:::i;:::-;19855:74;;19938:93;20027:3;19938:93;:::i;:::-;20056:2;20051:3;20047:12;20040:19;;19699:366;;;:::o;20071:419::-;20237:4;20275:2;20264:9;20260:18;20252:26;;20324:9;20318:4;20314:20;20310:1;20299:9;20295:17;20288:47;20352:131;20478:4;20352:131;:::i;:::-;20344:139;;20071:419;;;:::o;20496:297::-;20636:34;20632:1;20624:6;20620:14;20613:58;20705:34;20700:2;20692:6;20688:15;20681:59;20774:11;20769:2;20761:6;20757:15;20750:36;20496:297;:::o;20799:366::-;20941:3;20962:67;21026:2;21021:3;20962:67;:::i;:::-;20955:74;;21038:93;21127:3;21038:93;:::i;:::-;21156:2;21151:3;21147:12;21140:19;;20799:366;;;:::o;21171:419::-;21337:4;21375:2;21364:9;21360:18;21352:26;;21424:9;21418:4;21414:20;21410:1;21399:9;21395:17;21388:47;21452:131;21578:4;21452:131;:::i;:::-;21444:139;;21171:419;;;:::o;21596:177::-;21736:29;21732:1;21724:6;21720:14;21713:53;21596:177;:::o;21779:366::-;21921:3;21942:67;22006:2;22001:3;21942:67;:::i;:::-;21935:74;;22018:93;22107:3;22018:93;:::i;:::-;22136:2;22131:3;22127:12;22120:19;;21779:366;;;:::o;22151:419::-;22317:4;22355:2;22344:9;22340:18;22332:26;;22404:9;22398:4;22394:20;22390:1;22379:9;22375:17;22368:47;22432:131;22558:4;22432:131;:::i;:::-;22424:139;;22151:419;;;:::o;22576:241::-;22716:34;22712:1;22704:6;22700:14;22693:58;22785:24;22780:2;22772:6;22768:15;22761:49;22576:241;:::o;22823:366::-;22965:3;22986:67;23050:2;23045:3;22986:67;:::i;:::-;22979:74;;23062:93;23151:3;23062:93;:::i;:::-;23180:2;23175:3;23171:12;23164:19;;22823:366;;;:::o;23195:419::-;23361:4;23399:2;23388:9;23384:18;23376:26;;23448:9;23442:4;23438:20;23434:1;23423:9;23419:17;23412:47;23476:131;23602:4;23476:131;:::i;:::-;23468:139;;23195:419;;;:::o;23620:348::-;23660:7;23683:20;23701:1;23683:20;:::i;:::-;23678:25;;23717:20;23735:1;23717:20;:::i;:::-;23712:25;;23905:1;23837:66;23833:74;23830:1;23827:81;23822:1;23815:9;23808:17;23804:105;23801:131;;;23912:18;;:::i;:::-;23801:131;23960:1;23957;23953:9;23942:20;;23620:348;;;;:::o;23974:180::-;24022:77;24019:1;24012:88;24119:4;24116:1;24109:15;24143:4;24140:1;24133:15;24160:185;24200:1;24217:20;24235:1;24217:20;:::i;:::-;24212:25;;24251:20;24269:1;24251:20;:::i;:::-;24246:25;;24290:1;24280:35;;24295:18;;:::i;:::-;24280:35;24337:1;24334;24330:9;24325:14;;24160:185;;;;:::o;24351:191::-;24391:4;24411:20;24429:1;24411:20;:::i;:::-;24406:25;;24445:20;24463:1;24445:20;:::i;:::-;24440:25;;24484:1;24481;24478:8;24475:34;;;24489:18;;:::i;:::-;24475:34;24534:1;24531;24527:9;24519:17;;24351:191;;;;:::o;24548:147::-;24649:11;24686:3;24671:18;;24548:147;;;;:::o;24701:114::-;;:::o;24821:398::-;24980:3;25001:83;25082:1;25077:3;25001:83;:::i;:::-;24994:90;;25093:93;25182:3;25093:93;:::i;:::-;25211:1;25206:3;25202:11;25195:18;;24821:398;;;:::o;25225:379::-;25409:3;25431:147;25574:3;25431:147;:::i;:::-;25424:154;;25595:3;25588:10;;25225:379;;;:::o;25610:442::-;25759:4;25797:2;25786:9;25782:18;25774:26;;25810:71;25878:1;25867:9;25863:17;25854:6;25810:71;:::i;:::-;25891:72;25959:2;25948:9;25944:18;25935:6;25891:72;:::i;:::-;25973;26041:2;26030:9;26026:18;26017:6;25973:72;:::i;:::-;25610:442;;;;;;:::o;26058:220::-;26198:34;26194:1;26186:6;26182:14;26175:58;26267:3;26262:2;26254:6;26250:15;26243:28;26058:220;:::o;26284:366::-;26426:3;26447:67;26511:2;26506:3;26447:67;:::i;:::-;26440:74;;26523:93;26612:3;26523:93;:::i;:::-;26641:2;26636:3;26632:12;26625:19;;26284:366;;;:::o;26656:419::-;26822:4;26860:2;26849:9;26845:18;26837:26;;26909:9;26903:4;26899:20;26895:1;26884:9;26880:17;26873:47;26937:131;27063:4;26937:131;:::i;:::-;26929:139;;26656:419;;;:::o;27081:180::-;27129:77;27126:1;27119:88;27226:4;27223:1;27216:15;27250:4;27247:1;27240:15;27267:180;27315:77;27312:1;27305:88;27412:4;27409:1;27402:15;27436:4;27433:1;27426:15;27453:143;27510:5;27541:6;27535:13;27526:22;;27557:33;27584:5;27557:33;:::i;:::-;27453:143;;;;:::o;27602:351::-;27672:6;27721:2;27709:9;27700:7;27696:23;27692:32;27689:119;;;27727:79;;:::i;:::-;27689:119;27847:1;27872:64;27928:7;27919:6;27908:9;27904:22;27872:64;:::i;:::-;27862:74;;27818:128;27602:351;;;;:::o;27959:85::-;28004:7;28033:5;28022:16;;27959:85;;;:::o;28050:158::-;28108:9;28141:61;28159:42;28168:32;28194:5;28168:32;:::i;:::-;28159:42;:::i;:::-;28141:61;:::i;:::-;28128:74;;28050:158;;;:::o;28214:147::-;28309:45;28348:5;28309:45;:::i;:::-;28304:3;28297:58;28214:147;;:::o;28367:114::-;28434:6;28468:5;28462:12;28452:22;;28367:114;;;:::o;28487:184::-;28586:11;28620:6;28615:3;28608:19;28660:4;28655:3;28651:14;28636:29;;28487:184;;;;:::o;28677:132::-;28744:4;28767:3;28759:11;;28797:4;28792:3;28788:14;28780:22;;28677:132;;;:::o;28815:108::-;28892:24;28910:5;28892:24;:::i;:::-;28887:3;28880:37;28815:108;;:::o;28929:179::-;28998:10;29019:46;29061:3;29053:6;29019:46;:::i;:::-;29097:4;29092:3;29088:14;29074:28;;28929:179;;;;:::o;29114:113::-;29184:4;29216;29211:3;29207:14;29199:22;;29114:113;;;:::o;29263:732::-;29382:3;29411:54;29459:5;29411:54;:::i;:::-;29481:86;29560:6;29555:3;29481:86;:::i;:::-;29474:93;;29591:56;29641:5;29591:56;:::i;:::-;29670:7;29701:1;29686:284;29711:6;29708:1;29705:13;29686:284;;;29787:6;29781:13;29814:63;29873:3;29858:13;29814:63;:::i;:::-;29807:70;;29900:60;29953:6;29900:60;:::i;:::-;29890:70;;29746:224;29733:1;29730;29726:9;29721:14;;29686:284;;;29690:14;29986:3;29979:10;;29387:608;;;29263:732;;;;:::o;30001:831::-;30264:4;30302:3;30291:9;30287:19;30279:27;;30316:71;30384:1;30373:9;30369:17;30360:6;30316:71;:::i;:::-;30397:80;30473:2;30462:9;30458:18;30449:6;30397:80;:::i;:::-;30524:9;30518:4;30514:20;30509:2;30498:9;30494:18;30487:48;30552:108;30655:4;30646:6;30552:108;:::i;:::-;30544:116;;30670:72;30738:2;30727:9;30723:18;30714:6;30670:72;:::i;:::-;30752:73;30820:3;30809:9;30805:19;30796:6;30752:73;:::i;:::-;30001:831;;;;;;;;:::o;30838:807::-;31087:4;31125:3;31114:9;31110:19;31102:27;;31139:71;31207:1;31196:9;31192:17;31183:6;31139:71;:::i;:::-;31220:72;31288:2;31277:9;31273:18;31264:6;31220:72;:::i;:::-;31302:80;31378:2;31367:9;31363:18;31354:6;31302:80;:::i;:::-;31392;31468:2;31457:9;31453:18;31444:6;31392:80;:::i;:::-;31482:73;31550:3;31539:9;31535:19;31526:6;31482:73;:::i;:::-;31565;31633:3;31622:9;31618:19;31609:6;31565:73;:::i;:::-;30838:807;;;;;;;;;:::o;31651:143::-;31708:5;31739:6;31733:13;31724:22;;31755:33;31782:5;31755:33;:::i;:::-;31651:143;;;;:::o;31800:663::-;31888:6;31896;31904;31953:2;31941:9;31932:7;31928:23;31924:32;31921:119;;;31959:79;;:::i;:::-;31921:119;32079:1;32104:64;32160:7;32151:6;32140:9;32136:22;32104:64;:::i;:::-;32094:74;;32050:128;32217:2;32243:64;32299:7;32290:6;32279:9;32275:22;32243:64;:::i;:::-;32233:74;;32188:129;32356:2;32382:64;32438:7;32429:6;32418:9;32414:22;32382:64;:::i;:::-;32372:74;;32327:129;31800:663;;;;;:::o
Swarm Source
ipfs://240f5cb5eec231233f9e13defbb1df4facbeac662f04edd3dbccc8e23d74e5f2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.