ERC-20
Overview
Max Total Supply
1,000,000,000 xAIWOJAK
Holders
10
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
xAIWOJAK
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-24 */ /* You Missed WOJAK ? - NOW HERE WE GO AGAIN - BASED DEV From SPORTY and BASED Co-DEV CrypTechKing. Previous Project : 10x Website: xaiwojak.xyz Telegram: t.me/xAIWOJAK Twitter.com/xaiwojak */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; 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 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 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; } 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); } library Address { function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract 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; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract xAIWOJAK is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; address public marketingWallet; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingWallet); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("xAI WOJAK", "xAIWOJAK") { address router; if (block.chainid == 56) { router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router } else if (block.chainid == 97) { router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); marketingFeeOnBuy = 2; marketingFeeOnSell = 2; marketingWallet = 0x97f848b4b35Df1E6EE84F1dd2bA903191d835aA2; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _mint(owner(), 1e9 * (10 ** decimals())); swapTokensAtAmount = totalSupply() / 5_000; tradingEnabled = false; swapEnabled = false; } receive() external payable { } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function changeMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingWallet,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } bool public tradingEnabled; function enableTrading() external onlyOwner{ require(!tradingEnabled, "Trading already enabled."); tradingEnabled = true; swapEnabled = true; } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && swapEnabled ) { swapping = true; swapAndSendMarketing(contractTokenBalance); swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = marketingFeeOnBuy; } else if (to == uniswapV2Pair) { _totalFees = marketingFeeOnSell; } else { _totalFees = 0; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function setSwapEnabled(bool _enabled) external onlyOwner{ require(swapEnabled != _enabled, "swapEnabled already at this state."); swapEnabled = _enabled; } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply"); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndSendMarketing(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; payable(marketingWallet).sendValue(newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600981526020017f78414920574f4a414b00000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f784149574f4a414b00000000000000000000000000000000000000000000000081525081600390816200008f919062000c65565b508060049081620000a1919062000c65565b5050506000620000b66200065360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000603846036200017d577310ed43c718714eb63d5aa57b78b54704e256024e9050620001dd565b60614603620001a35773d99d1c33f9fc3444f8101754abc46c52416550d19050620001dc565b6001461480620001b35750600546145b15620001d657737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001db565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000256919062000db6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000db6565b6040518363ffffffff1660e01b81526004016200030392919062000df9565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000349919062000db6565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200065b60201b60201c565b60026009819055506002600a819055507397f848b4b35df1e6ee84f1dd2ba903191d835aa2600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006200049d6200082c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005ef620005b46200082c60201b60201c565b620005c46200085660201b60201c565b600a620005d2919062000fb6565b633b9aca00620005e3919062001007565b6200085f60201b60201c565b61138862000602620009d760201b60201c565b6200060e919062001081565b600c819055506000600d60026101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff021916908315150217905550505050620012d5565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c49062001140565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200073f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073690620011d8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200081f91906200120b565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c89062001278565b60405180910390fd5b620008e560008383620009e160201b60201c565b8060026000828254620008f991906200129a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200095091906200129a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009b791906200120b565b60405180910390a3620009d360008383620009e660201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a6d57607f821691505b60208210810362000a835762000a8262000a25565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000aed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aae565b62000af9868362000aae565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b4662000b4062000b3a8462000b11565b62000b1b565b62000b11565b9050919050565b6000819050919050565b62000b628362000b25565b62000b7a62000b718262000b4d565b84845462000abb565b825550505050565b600090565b62000b9162000b82565b62000b9e81848462000b57565b505050565b5b8181101562000bc65762000bba60008262000b87565b60018101905062000ba4565b5050565b601f82111562000c155762000bdf8162000a89565b62000bea8462000a9e565b8101602085101562000bfa578190505b62000c1262000c098562000a9e565b83018262000ba3565b50505b505050565b600082821c905092915050565b600062000c3a6000198460080262000c1a565b1980831691505092915050565b600062000c55838362000c27565b9150826002028217905092915050565b62000c7082620009eb565b67ffffffffffffffff81111562000c8c5762000c8b620009f6565b5b62000c98825462000a54565b62000ca582828562000bca565b600060209050601f83116001811462000cdd576000841562000cc8578287015190505b62000cd4858262000c47565b86555062000d44565b601f19841662000ced8662000a89565b60005b8281101562000d175784890151825560018201915060208501945060208101905062000cf0565b8683101562000d37578489015162000d33601f89168262000c27565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d7e8262000d51565b9050919050565b62000d908162000d71565b811462000d9c57600080fd5b50565b60008151905062000db08162000d85565b92915050565b60006020828403121562000dcf5762000dce62000d4c565b5b600062000ddf8482850162000d9f565b91505092915050565b62000df38162000d71565b82525050565b600060408201905062000e10600083018562000de8565b62000e1f602083018462000de8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000eb45780860481111562000e8c5762000e8b62000e26565b5b600185161562000e9c5780820291505b808102905062000eac8562000e55565b945062000e6c565b94509492505050565b60008262000ecf576001905062000fa2565b8162000edf576000905062000fa2565b816001811462000ef8576002811462000f035762000f39565b600191505062000fa2565b60ff84111562000f185762000f1762000e26565b5b8360020a91508482111562000f325762000f3162000e26565b5b5062000fa2565b5060208310610133831016604e8410600b841016171562000f735782820a90508381111562000f6d5762000f6c62000e26565b5b62000fa2565b62000f82848484600162000e62565b9250905081840481111562000f9c5762000f9b62000e26565b5b81810290505b9392505050565b600060ff82169050919050565b600062000fc38262000b11565b915062000fd08362000fa9565b925062000fff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ebd565b905092915050565b6000620010148262000b11565b9150620010218362000b11565b9250828202620010318162000b11565b915082820484148315176200104b576200104a62000e26565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200108e8262000b11565b91506200109b8362000b11565b925082620010ae57620010ad62001052565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001128602483620010b9565b91506200113582620010ca565b604082019050919050565b600060208201905081810360008301526200115b8162001119565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620011c0602283620010b9565b9150620011cd8262001162565b604082019050919050565b60006020820190508181036000830152620011f381620011b1565b9050919050565b620012058162000b11565b82525050565b6000602082019050620012226000830184620011fa565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001260601f83620010b9565b91506200126d8262001228565b602082019050919050565b60006020820190508181036000830152620012938162001251565b9050919050565b6000620012a78262000b11565b9150620012b48362000b11565b9250828201905080821115620012cf57620012ce62000e26565b5b92915050565b61396e80620012e56000396000f3fe6080604052600436106101c65760003560e01c806375f0a874116100f7578063bb85c6d111610095578063e01af92c11610064578063e01af92c14610667578063e2f4560514610690578063f2fde38b146106bb578063f9d0831a146106e4576101cd565b8063bb85c6d1146105ad578063c0246668146105d6578063dc4c7dbc146105ff578063dd62ed3e1461062a576101cd565b806395d89b41116100d157806395d89b41146104df578063a457c2d71461050a578063a9059cbb14610547578063afa4f3b214610584576101cd565b806375f0a874146104725780638a8c523c1461049d5780638da5cb5b146104b4576101cd565b806349bd5a5e116101645780635fc2e5961161013e5780635fc2e596146103c85780636ddd1713146103f357806370a082311461041e578063715018a61461045b576101cd565b806349bd5a5e146103355780634ada218b146103605780634fbee1931461038b576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd14610290578063313ce567146102cd57806339509351146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e761070d565b6040516101f49190612728565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906127e3565b61079f565b604051610231919061283e565b60405180910390f35b34801561024657600080fd5b5061024f6107bd565b60405161025c91906128b8565b60405180910390f35b34801561027157600080fd5b5061027a6107e3565b60405161028791906128e2565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906128fd565b6107ed565b6040516102c4919061283e565b60405180910390f35b3480156102d957600080fd5b506102e261090c565b6040516102ef919061296c565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a91906127e3565b610915565b60405161032c919061283e565b60405180910390f35b34801561034157600080fd5b5061034a6109c1565b6040516103579190612996565b60405180910390f35b34801561036c57600080fd5b506103756109e7565b604051610382919061283e565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906129b1565b6109fa565b6040516103bf919061283e565b60405180910390f35b3480156103d457600080fd5b506103dd610a50565b6040516103ea91906128e2565b60405180910390f35b3480156103ff57600080fd5b50610408610a56565b604051610415919061283e565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906129b1565b610a69565b60405161045291906128e2565b60405180910390f35b34801561046757600080fd5b50610470610ab1565b005b34801561047e57600080fd5b50610487610c09565b6040516104949190612996565b60405180910390f35b3480156104a957600080fd5b506104b2610c2f565b005b3480156104c057600080fd5b506104c9610d4e565b6040516104d69190612996565b60405180910390f35b3480156104eb57600080fd5b506104f4610d78565b6040516105019190612728565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c91906127e3565b610e0a565b60405161053e919061283e565b60405180910390f35b34801561055357600080fd5b5061056e600480360381019061056991906127e3565b610ef5565b60405161057b919061283e565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a691906129de565b610f13565b005b3480156105b957600080fd5b506105d460048036038101906105cf91906129b1565b611044565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190612a37565b611277565b005b34801561060b57600080fd5b50610614611449565b60405161062191906128e2565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612a77565b61144f565b60405161065e91906128e2565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190612ab7565b6114d6565b005b34801561069c57600080fd5b506106a56115df565b6040516106b291906128e2565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd91906129b1565b6115e5565b005b3480156106f057600080fd5b5061070b600480360381019061070691906129b1565b6117ab565b005b60606003805461071c90612b13565b80601f016020809104026020016040519081016040528092919081815260200182805461074890612b13565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050505050905090565b60006107b36107ac611a1b565b8484611a23565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610839611a1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f557828110156108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d790612bb6565b60405180910390fd5b6108f4856108ec611a1b565b858403611a23565b5b610900858585611bec565b60019150509392505050565b60006012905090565b60006109b7610922611a1b565b848460016000610930611a1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109b29190612c05565b611a23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ab9611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612c85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c37611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90612c85565b60405180910390fd5b600d60029054906101000a900460ff1615610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90612cf1565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d8790612b13565b80601f0160208091040260200160405190810160405280929190818152602001828054610db390612b13565b8015610e005780601f10610dd557610100808354040283529160200191610e00565b820191906000526020600020905b815481529060010190602001808311610de357829003601f168201915b5050505050905090565b60008060016000610e19611a1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90612d83565b60405180910390fd5b610eea610ee1611a1b565b85858403611a23565b600191505092915050565b6000610f09610f02611a1b565b8484611bec565b6001905092915050565b610f1b611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612c85565b60405180910390fd5b620f4240610fb66107e3565b610fc09190612dd2565b8111611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff890612e75565b60405180910390fd5b80600c819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600c5460405161103991906128e2565b60405180910390a150565b61104c611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612c85565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116290612f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612f99565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161126c9190612996565b60405180910390a150565b61127f611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612c85565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979061302b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161143d919061283e565b60405180910390a25050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114de611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156490612c85565b60405180910390fd5b801515600d60019054906101000a900460ff161515036115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9906130bd565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b6115ed611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390612c85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e29061314f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117b3611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990612c85565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a7906131e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119135761190d473373ffffffffffffffffffffffffffffffffffffffff166120a290919063ffffffff16565b50611a18565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119539190612996565b602060405180830381865afa158015611970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119949190613216565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016119d1929190613243565b6020604051808303816000875af11580156119f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a149190613281565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613320565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af8906133b2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bdf91906128e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc1906134d6565b60405180910390fd5b600d60029054906101000a900460ff1680611d2e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d825750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db890613542565b60405180910390fd5b60008103611dda57611dd58383600061215d565b61209d565b6000611de530610a69565b90506000600c548210159050808015611e0b5750600d60009054906101000a900460ff16155b8015611e645750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e7c5750600d60019054906101000a900460ff165b15611ec1576001600d60006101000a81548160ff021916908315150217905550611ea5826123dc565b6000600d60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f645750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f7b5750600d60009054906101000a900460ff165b15611f89576000905061204e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611fe857600954905061204d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361204757600a54905061204c565b600090505b5b5b600081111561208e576000606482866120679190613562565b6120719190612dd2565b9050808561207f91906135a4565b945061208c87308361215d565b505b61209986868661215d565b5050505b505050565b6000814710156120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90613624565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405161210d90613675565b60006040518083038185875af1925050503d806000811461214a576040519150601f19603f3d011682016040523d82523d6000602084013e61214f565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906134d6565b60405180910390fd5b61224683838361268e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c3906136fc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461235f9190612c05565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123c391906128e2565b60405180910390a36123d6848484612693565b50505050565b60004790506000600267ffffffffffffffff8111156123fe576123fd61371c565b5b60405190808252806020026020018201604052801561242c5781602001602082028036833780820191505090505b50905030816000815181106124445761244361374b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250f919061378f565b816001815181106125235761252261374b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016125c19594939291906138b5565b600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b505050506000824761260191906135a4565b905061264e81600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120a290919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999848260405161268092919061390f565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126d25780820151818401526020810190506126b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006126fa82612698565b61270481856126a3565b93506127148185602086016126b4565b61271d816126de565b840191505092915050565b6000602082019050818103600083015261274281846126ef565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061277a8261274f565b9050919050565b61278a8161276f565b811461279557600080fd5b50565b6000813590506127a781612781565b92915050565b6000819050919050565b6127c0816127ad565b81146127cb57600080fd5b50565b6000813590506127dd816127b7565b92915050565b600080604083850312156127fa576127f961274a565b5b600061280885828601612798565b9250506020612819858286016127ce565b9150509250929050565b60008115159050919050565b61283881612823565b82525050565b6000602082019050612853600083018461282f565b92915050565b6000819050919050565b600061287e6128796128748461274f565b612859565b61274f565b9050919050565b600061289082612863565b9050919050565b60006128a282612885565b9050919050565b6128b281612897565b82525050565b60006020820190506128cd60008301846128a9565b92915050565b6128dc816127ad565b82525050565b60006020820190506128f760008301846128d3565b92915050565b6000806000606084860312156129165761291561274a565b5b600061292486828701612798565b935050602061293586828701612798565b9250506040612946868287016127ce565b9150509250925092565b600060ff82169050919050565b61296681612950565b82525050565b6000602082019050612981600083018461295d565b92915050565b6129908161276f565b82525050565b60006020820190506129ab6000830184612987565b92915050565b6000602082840312156129c7576129c661274a565b5b60006129d584828501612798565b91505092915050565b6000602082840312156129f4576129f361274a565b5b6000612a02848285016127ce565b91505092915050565b612a1481612823565b8114612a1f57600080fd5b50565b600081359050612a3181612a0b565b92915050565b60008060408385031215612a4e57612a4d61274a565b5b6000612a5c85828601612798565b9250506020612a6d85828601612a22565b9150509250929050565b60008060408385031215612a8e57612a8d61274a565b5b6000612a9c85828601612798565b9250506020612aad85828601612798565b9150509250929050565b600060208284031215612acd57612acc61274a565b5b6000612adb84828501612a22565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b2b57607f821691505b602082108103612b3e57612b3d612ae4565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ba06028836126a3565b9150612bab82612b44565b604082019050919050565b60006020820190508181036000830152612bcf81612b93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c10826127ad565b9150612c1b836127ad565b9250828201905080821115612c3357612c32612bd6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c6f6020836126a3565b9150612c7a82612c39565b602082019050919050565b60006020820190508181036000830152612c9e81612c62565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000612cdb6018836126a3565b9150612ce682612ca5565b602082019050919050565b60006020820190508181036000830152612d0a81612cce565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d6d6025836126a3565b9150612d7882612d11565b604082019050919050565b60006020820190508181036000830152612d9c81612d60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ddd826127ad565b9150612de8836127ad565b925082612df857612df7612da3565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000612e5f603f836126a3565b9150612e6a82612e03565b604082019050919050565b60006020820190508181036000830152612e8e81612e52565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612ef16028836126a3565b9150612efc82612e95565b604082019050919050565b60006020820190508181036000830152612f2081612ee4565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612f83602b836126a3565b9150612f8e82612f27565b604082019050919050565b60006020820190508181036000830152612fb281612f76565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613015602a836126a3565b915061302082612fb9565b604082019050919050565b6000602082019050818103600083015261304481613008565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006130a76022836126a3565b91506130b28261304b565b604082019050919050565b600060208201905081810360008301526130d68161309a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131396026836126a3565b9150613144826130dd565b604082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006131cb6037836126a3565b91506131d68261316f565b604082019050919050565b600060208201905081810360008301526131fa816131be565b9050919050565b600081519050613210816127b7565b92915050565b60006020828403121561322c5761322b61274a565b5b600061323a84828501613201565b91505092915050565b60006040820190506132586000830185612987565b61326560208301846128d3565b9392505050565b60008151905061327b81612a0b565b92915050565b6000602082840312156132975761329661274a565b5b60006132a58482850161326c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061330a6024836126a3565b9150613315826132ae565b604082019050919050565b60006020820190508181036000830152613339816132fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061339c6022836126a3565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061342e6025836126a3565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134c06023836126a3565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061352c6018836126a3565b9150613537826134f6565b602082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b600061356d826127ad565b9150613578836127ad565b9250828202613586816127ad565b9150828204841483151761359d5761359c612bd6565b5b5092915050565b60006135af826127ad565b91506135ba836127ad565b92508282039050818111156135d2576135d1612bd6565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061360e601d836126a3565b9150613619826135d8565b602082019050919050565b6000602082019050818103600083015261363d81613601565b9050919050565b600081905092915050565b50565b600061365f600083613644565b915061366a8261364f565b600082019050919050565b600061368082613652565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136e66026836126a3565b91506136f18261368a565b604082019050919050565b60006020820190508181036000830152613715816136d9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061378981612781565b92915050565b6000602082840312156137a5576137a461274a565b5b60006137b38482850161377a565b91505092915050565b6000819050919050565b60006137e16137dc6137d7846137bc565b612859565b6127ad565b9050919050565b6137f1816137c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382c8161276f565b82525050565b600061383e8383613823565b60208301905092915050565b6000602082019050919050565b6000613862826137f7565b61386c8185613802565b935061387783613813565b8060005b838110156138a857815161388f8882613832565b975061389a8361384a565b92505060018101905061387b565b5085935050505092915050565b600060a0820190506138ca60008301886128d3565b6138d760208301876137e8565b81810360408301526138e98186613857565b90506138f86060830185612987565b61390560808301846128d3565b9695505050505050565b600060408201905061392460008301856128d3565b61393160208301846128d3565b939250505056fea26469706673582212209ce4092ab4ae0224adc208da4c3f63a8caeccf4e59f2f870ca5e34e93773809e64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101c65760003560e01c806375f0a874116100f7578063bb85c6d111610095578063e01af92c11610064578063e01af92c14610667578063e2f4560514610690578063f2fde38b146106bb578063f9d0831a146106e4576101cd565b8063bb85c6d1146105ad578063c0246668146105d6578063dc4c7dbc146105ff578063dd62ed3e1461062a576101cd565b806395d89b41116100d157806395d89b41146104df578063a457c2d71461050a578063a9059cbb14610547578063afa4f3b214610584576101cd565b806375f0a874146104725780638a8c523c1461049d5780638da5cb5b146104b4576101cd565b806349bd5a5e116101645780635fc2e5961161013e5780635fc2e596146103c85780636ddd1713146103f357806370a082311461041e578063715018a61461045b576101cd565b806349bd5a5e146103355780634ada218b146103605780634fbee1931461038b576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd14610290578063313ce567146102cd57806339509351146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e761070d565b6040516101f49190612728565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906127e3565b61079f565b604051610231919061283e565b60405180910390f35b34801561024657600080fd5b5061024f6107bd565b60405161025c91906128b8565b60405180910390f35b34801561027157600080fd5b5061027a6107e3565b60405161028791906128e2565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906128fd565b6107ed565b6040516102c4919061283e565b60405180910390f35b3480156102d957600080fd5b506102e261090c565b6040516102ef919061296c565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a91906127e3565b610915565b60405161032c919061283e565b60405180910390f35b34801561034157600080fd5b5061034a6109c1565b6040516103579190612996565b60405180910390f35b34801561036c57600080fd5b506103756109e7565b604051610382919061283e565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906129b1565b6109fa565b6040516103bf919061283e565b60405180910390f35b3480156103d457600080fd5b506103dd610a50565b6040516103ea91906128e2565b60405180910390f35b3480156103ff57600080fd5b50610408610a56565b604051610415919061283e565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906129b1565b610a69565b60405161045291906128e2565b60405180910390f35b34801561046757600080fd5b50610470610ab1565b005b34801561047e57600080fd5b50610487610c09565b6040516104949190612996565b60405180910390f35b3480156104a957600080fd5b506104b2610c2f565b005b3480156104c057600080fd5b506104c9610d4e565b6040516104d69190612996565b60405180910390f35b3480156104eb57600080fd5b506104f4610d78565b6040516105019190612728565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c91906127e3565b610e0a565b60405161053e919061283e565b60405180910390f35b34801561055357600080fd5b5061056e600480360381019061056991906127e3565b610ef5565b60405161057b919061283e565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a691906129de565b610f13565b005b3480156105b957600080fd5b506105d460048036038101906105cf91906129b1565b611044565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190612a37565b611277565b005b34801561060b57600080fd5b50610614611449565b60405161062191906128e2565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612a77565b61144f565b60405161065e91906128e2565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190612ab7565b6114d6565b005b34801561069c57600080fd5b506106a56115df565b6040516106b291906128e2565b60405180910390f35b3480156106c757600080fd5b506106e260048036038101906106dd91906129b1565b6115e5565b005b3480156106f057600080fd5b5061070b600480360381019061070691906129b1565b6117ab565b005b60606003805461071c90612b13565b80601f016020809104026020016040519081016040528092919081815260200182805461074890612b13565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050505050905090565b60006107b36107ac611a1b565b8484611a23565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610839611a1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f557828110156108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d790612bb6565b60405180910390fd5b6108f4856108ec611a1b565b858403611a23565b5b610900858585611bec565b60019150509392505050565b60006012905090565b60006109b7610922611a1b565b848460016000610930611a1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109b29190612c05565b611a23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ab9611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612c85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c37611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90612c85565b60405180910390fd5b600d60029054906101000a900460ff1615610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90612cf1565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d8790612b13565b80601f0160208091040260200160405190810160405280929190818152602001828054610db390612b13565b8015610e005780601f10610dd557610100808354040283529160200191610e00565b820191906000526020600020905b815481529060010190602001808311610de357829003601f168201915b5050505050905090565b60008060016000610e19611a1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90612d83565b60405180910390fd5b610eea610ee1611a1b565b85858403611a23565b600191505092915050565b6000610f09610f02611a1b565b8484611bec565b6001905092915050565b610f1b611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612c85565b60405180910390fd5b620f4240610fb66107e3565b610fc09190612dd2565b8111611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff890612e75565b60405180910390fd5b80600c819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600c5460405161103991906128e2565b60405180910390a150565b61104c611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612c85565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116290612f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612f99565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161126c9190612996565b60405180910390a150565b61127f611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612c85565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979061302b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161143d919061283e565b60405180910390a25050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114de611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156490612c85565b60405180910390fd5b801515600d60019054906101000a900460ff161515036115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9906130bd565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b6115ed611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390612c85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e29061314f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117b3611a1b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990612c85565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a7906131e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119135761190d473373ffffffffffffffffffffffffffffffffffffffff166120a290919063ffffffff16565b50611a18565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119539190612996565b602060405180830381865afa158015611970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119949190613216565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016119d1929190613243565b6020604051808303816000875af11580156119f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a149190613281565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613320565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af8906133b2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bdf91906128e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc1906134d6565b60405180910390fd5b600d60029054906101000a900460ff1680611d2e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d825750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db890613542565b60405180910390fd5b60008103611dda57611dd58383600061215d565b61209d565b6000611de530610a69565b90506000600c548210159050808015611e0b5750600d60009054906101000a900460ff16155b8015611e645750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e7c5750600d60019054906101000a900460ff165b15611ec1576001600d60006101000a81548160ff021916908315150217905550611ea5826123dc565b6000600d60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f645750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f7b5750600d60009054906101000a900460ff165b15611f89576000905061204e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611fe857600954905061204d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361204757600a54905061204c565b600090505b5b5b600081111561208e576000606482866120679190613562565b6120719190612dd2565b9050808561207f91906135a4565b945061208c87308361215d565b505b61209986868661215d565b5050505b505050565b6000814710156120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90613624565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405161210d90613675565b60006040518083038185875af1925050503d806000811461214a576040519150601f19603f3d011682016040523d82523d6000602084013e61214f565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906134d6565b60405180910390fd5b61224683838361268e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c3906136fc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461235f9190612c05565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123c391906128e2565b60405180910390a36123d6848484612693565b50505050565b60004790506000600267ffffffffffffffff8111156123fe576123fd61371c565b5b60405190808252806020026020018201604052801561242c5781602001602082028036833780820191505090505b50905030816000815181106124445761244361374b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250f919061378f565b816001815181106125235761252261374b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016125c19594939291906138b5565b600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b505050506000824761260191906135a4565b905061264e81600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120a290919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999848260405161268092919061390f565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126d25780820151818401526020810190506126b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006126fa82612698565b61270481856126a3565b93506127148185602086016126b4565b61271d816126de565b840191505092915050565b6000602082019050818103600083015261274281846126ef565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061277a8261274f565b9050919050565b61278a8161276f565b811461279557600080fd5b50565b6000813590506127a781612781565b92915050565b6000819050919050565b6127c0816127ad565b81146127cb57600080fd5b50565b6000813590506127dd816127b7565b92915050565b600080604083850312156127fa576127f961274a565b5b600061280885828601612798565b9250506020612819858286016127ce565b9150509250929050565b60008115159050919050565b61283881612823565b82525050565b6000602082019050612853600083018461282f565b92915050565b6000819050919050565b600061287e6128796128748461274f565b612859565b61274f565b9050919050565b600061289082612863565b9050919050565b60006128a282612885565b9050919050565b6128b281612897565b82525050565b60006020820190506128cd60008301846128a9565b92915050565b6128dc816127ad565b82525050565b60006020820190506128f760008301846128d3565b92915050565b6000806000606084860312156129165761291561274a565b5b600061292486828701612798565b935050602061293586828701612798565b9250506040612946868287016127ce565b9150509250925092565b600060ff82169050919050565b61296681612950565b82525050565b6000602082019050612981600083018461295d565b92915050565b6129908161276f565b82525050565b60006020820190506129ab6000830184612987565b92915050565b6000602082840312156129c7576129c661274a565b5b60006129d584828501612798565b91505092915050565b6000602082840312156129f4576129f361274a565b5b6000612a02848285016127ce565b91505092915050565b612a1481612823565b8114612a1f57600080fd5b50565b600081359050612a3181612a0b565b92915050565b60008060408385031215612a4e57612a4d61274a565b5b6000612a5c85828601612798565b9250506020612a6d85828601612a22565b9150509250929050565b60008060408385031215612a8e57612a8d61274a565b5b6000612a9c85828601612798565b9250506020612aad85828601612798565b9150509250929050565b600060208284031215612acd57612acc61274a565b5b6000612adb84828501612a22565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b2b57607f821691505b602082108103612b3e57612b3d612ae4565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ba06028836126a3565b9150612bab82612b44565b604082019050919050565b60006020820190508181036000830152612bcf81612b93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c10826127ad565b9150612c1b836127ad565b9250828201905080821115612c3357612c32612bd6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c6f6020836126a3565b9150612c7a82612c39565b602082019050919050565b60006020820190508181036000830152612c9e81612c62565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000612cdb6018836126a3565b9150612ce682612ca5565b602082019050919050565b60006020820190508181036000830152612d0a81612cce565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d6d6025836126a3565b9150612d7882612d11565b604082019050919050565b60006020820190508181036000830152612d9c81612d60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ddd826127ad565b9150612de8836127ad565b925082612df857612df7612da3565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000612e5f603f836126a3565b9150612e6a82612e03565b604082019050919050565b60006020820190508181036000830152612e8e81612e52565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612ef16028836126a3565b9150612efc82612e95565b604082019050919050565b60006020820190508181036000830152612f2081612ee4565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612f83602b836126a3565b9150612f8e82612f27565b604082019050919050565b60006020820190508181036000830152612fb281612f76565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613015602a836126a3565b915061302082612fb9565b604082019050919050565b6000602082019050818103600083015261304481613008565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006130a76022836126a3565b91506130b28261304b565b604082019050919050565b600060208201905081810360008301526130d68161309a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131396026836126a3565b9150613144826130dd565b604082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006131cb6037836126a3565b91506131d68261316f565b604082019050919050565b600060208201905081810360008301526131fa816131be565b9050919050565b600081519050613210816127b7565b92915050565b60006020828403121561322c5761322b61274a565b5b600061323a84828501613201565b91505092915050565b60006040820190506132586000830185612987565b61326560208301846128d3565b9392505050565b60008151905061327b81612a0b565b92915050565b6000602082840312156132975761329661274a565b5b60006132a58482850161326c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061330a6024836126a3565b9150613315826132ae565b604082019050919050565b60006020820190508181036000830152613339816132fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061339c6022836126a3565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061342e6025836126a3565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134c06023836126a3565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061352c6018836126a3565b9150613537826134f6565b602082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b600061356d826127ad565b9150613578836127ad565b9250828202613586816127ad565b9150828204841483151761359d5761359c612bd6565b5b5092915050565b60006135af826127ad565b91506135ba836127ad565b92508282039050818111156135d2576135d1612bd6565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061360e601d836126a3565b9150613619826135d8565b602082019050919050565b6000602082019050818103600083015261363d81613601565b9050919050565b600081905092915050565b50565b600061365f600083613644565b915061366a8261364f565b600082019050919050565b600061368082613652565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136e66026836126a3565b91506136f18261368a565b604082019050919050565b60006020820190508181036000830152613715816136d9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061378981612781565b92915050565b6000602082840312156137a5576137a461274a565b5b60006137b38482850161377a565b91505092915050565b6000819050919050565b60006137e16137dc6137d7846137bc565b612859565b6127ad565b9050919050565b6137f1816137c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382c8161276f565b82525050565b600061383e8383613823565b60208301905092915050565b6000602082019050919050565b6000613862826137f7565b61386c8185613802565b935061387783613813565b8060005b838110156138a857815161388f8882613832565b975061389a8361384a565b92505060018101905061387b565b5085935050505092915050565b600060a0820190506138ca60008301886128d3565b6138d760208301876137e8565b81810360408301526138e98186613857565b90506138f86060830185612987565b61390560808301846128d3565b9695505050505050565b600060408201905061392460008301856128d3565b61393160208301846128d3565b939250505056fea26469706673582212209ce4092ab4ae0224adc208da4c3f63a8caeccf4e59f2f870ca5e34e93773809e64736f6c63430008110033
Deployed Bytecode Sourcemap
16001:6374:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11286:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12200:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16086:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11607:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12377:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11506:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12958:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16134:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19514:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18994:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16234:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16431:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11723:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10473:148;;;;;;;;;;;;;:::i;:::-;;16317:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19549:175;;;;;;;;;;;;;:::i;:::-;;10259:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11394:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13181:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11858:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21413:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19127:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18696:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16274:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12041:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21226:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16357:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10629:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18223:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11286:100;11340:13;11373:5;11366:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11286:100;:::o;12200:169::-;12283:4;12300:39;12309:12;:10;:12::i;:::-;12323:7;12332:6;12300:8;:39::i;:::-;12357:4;12350:11;;12200:169;;;;:::o;16086:41::-;;;;;;;;;;;;;:::o;11607:108::-;11668:7;11695:12;;11688:19;;11607:108;:::o;12377:573::-;12517:4;12534:24;12561:11;:19;12573:6;12561:19;;;;;;;;;;;;;;;:33;12581:12;:10;:12::i;:::-;12561:33;;;;;;;;;;;;;;;;12534:60;;12629:17;12609:16;:37;12605:265;;12691:6;12671:16;:26;;12663:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12786:57;12795:6;12803:12;:10;:12::i;:::-;12836:6;12817:16;:25;12786:8;:57::i;:::-;12605:265;12882:36;12892:6;12900:9;12911:6;12882:9;:36::i;:::-;12938:4;12931:11;;;12377:573;;;;;:::o;11506:93::-;11564:5;11589:2;11582:9;;11506:93;:::o;12958:215::-;13046:4;13063:80;13072:12;:10;:12::i;:::-;13086:7;13132:10;13095:11;:25;13107:12;:10;:12::i;:::-;13095:25;;;;;;;;;;;;;;;:34;13121:7;13095:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13063:8;:80::i;:::-;13161:4;13154:11;;12958:215;;;;:::o;16134:29::-;;;;;;;;;;;;;:::o;19514:26::-;;;;;;;;;;;;;:::o;18994:125::-;19059:4;19083:19;:28;19103:7;19083:28;;;;;;;;;;;;;;;;;;;;;;;;;19076:35;;18994:125;;;:::o;16234:33::-;;;;:::o;16431:26::-;;;;;;;;;;;;;:::o;11723:127::-;11797:7;11824:9;:18;11834:7;11824:18;;;;;;;;;;;;;;;;11817:25;;11723:127;;;:::o;10473:148::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10580:1:::1;10543:40;;10564:6;;;;;;;;;;;10543:40;;;;;;;;;;;;10611:1;10594:6;;:19;;;;;;;;;;;;;;;;;;10473:148::o:0;16317:31::-;;;;;;;;;;;;;:::o;19549:175::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19612:14:::1;;;;;;;;;;;19611:15;19603:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19683:4;19666:14;;:21;;;;;;;;;;;;;;;;;;19712:4;19698:11;;:18;;;;;;;;;;;;;;;;;;19549:175::o:0;10259:79::-;10297:7;10324:6;;;;;;;;;;;10317:13;;10259:79;:::o;11394:104::-;11450:13;11483:7;11476:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11394:104;:::o;13181:413::-;13274:4;13291:24;13318:11;:25;13330:12;:10;:12::i;:::-;13318:25;;;;;;;;;;;;;;;:34;13344:7;13318:34;;;;;;;;;;;;;;;;13291:61;;13391:15;13371:16;:35;;13363:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13484:67;13493:12;:10;:12::i;:::-;13507:7;13535:15;13516:16;:34;13484:8;:67::i;:::-;13582:4;13575:11;;;13181:413;;;;:::o;11858:175::-;11944:4;11961:42;11971:12;:10;:12::i;:::-;11985:9;11996:6;11961:9;:42::i;:::-;12021:4;12014:11;;11858:175;;;;:::o;21413:304::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21528:9:::1;21512:13;:11;:13::i;:::-;:25;;;;:::i;:::-;21500:9;:37;21492:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;21637:9;21616:18;:30;;;;21664:45;21690:18;;21664:45;;;;;;:::i;:::-;;;;;;;;21413:304:::0;:::o;19127:379::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19241:15:::1;;;;;;;;;;;19221:35;;:16;:35;;::::0;19213:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19347:1;19319:30;;:16;:30;;::::0;19311:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19425:16;19407:15;;:34;;;;;;;;;;;;;;;;;;19459:39;19482:15;;;;;;;;;;;19459:39;;;;;;:::i;:::-;;;;;;;;19127:379:::0;:::o;18696:290::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18822:8:::1;18790:40;;:19;:28;18810:7;18790:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;18782:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18918:8;18887:19;:28;18907:7;18887:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18960:7;18944:34;;;18969:8;18944:34;;;;;;:::i;:::-;;;;;;;;18696:290:::0;;:::o;16274:34::-;;;;:::o;12041:151::-;12130:7;12157:11;:18;12169:5;12157:18;;;;;;;;;;;;;;;:27;12176:7;12157:27;;;;;;;;;;;;;;;;12150:34;;12041:151;;;;:::o;21226:179::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21317:8:::1;21302:23;;:11;;;;;;;;;;;:23;;::::0;21294:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21389:8;21375:11;;:22;;;;;;;;;;;;;;;;;;21226:179:::0;:::o;16357:34::-;;;;:::o;10629:244::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10738:1:::1;10718:22;;:8;:22;;::::0;10710:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10828:8;10799:38;;10820:6;;;;;;;;;;;10799:38;;;;;;;;;;;;10857:8;10848:6;;:17;;;;;;;;;;;;;;;;;;10629:244:::0;:::o;18223:465::-;10396:12;:10;:12::i;:::-;10386:22;;:6;;;;;;;;;;;:22;;;10378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18319:4:::1;18302:22;;:5;:22;;::::0;18294:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18416:3;18399:21;;:5;:21;;::::0;18395:127:::1;;18437:52;18467:21;18445:10;18437:29;;;;:52;;;;:::i;:::-;;18504:7;;18395:127;18532:17;18559:5;18532:33;;18576:15;18594:10;:20;;;18623:4;18594:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18576:53;;18640:10;:19;;;18660:10;18672:7;18640:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18283:405;;10456:1;18223:465:::0;:::o;9582:98::-;9635:7;9662:10;9655:17;;9582:98;:::o;15349:380::-;15502:1;15485:19;;:5;:19;;;15477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15583:1;15564:21;;:7;:21;;;15556:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15667:6;15637:11;:18;15649:5;15637:18;;;;;;;;;;;;;;;:27;15656:7;15637:27;;;;;;;;;;;;;;;:36;;;;15705:7;15689:32;;15698:5;15689:32;;;15714:6;15689:32;;;;;;:::i;:::-;;;;;;;;15349:380;;;:::o;19732:1486::-;19845:1;19829:18;;:4;:18;;;19821:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19922:1;19908:16;;:2;:16;;;19900:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19983:14;;;;;;;;;;;:43;;;;20001:19;:25;20021:4;20001:25;;;;;;;;;;;;;;;;;;;;;;;;;19983:43;:70;;;;20030:19;:23;20050:2;20030:23;;;;;;;;;;;;;;;;;;;;;;;;;19983:70;19975:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;20116:1;20106:6;:11;20102:93;;20134:28;20150:4;20156:2;20160:1;20134:15;:28::i;:::-;20177:7;;20102:93;20201:28;20232:24;20250:4;20232:9;:24::i;:::-;20201:55;;20269:12;20308:18;;20284:20;:42;;20269:57;;20343:7;:33;;;;;20368:8;;;;;;;;;;;20367:9;20343:33;:69;;;;;20399:13;;;;;;;;;;;20393:19;;:2;:19;;;20343:69;:97;;;;;20429:11;;;;;;;;;;;20343:97;20339:252;;;20478:4;20467:8;;:15;;;;;;;;;;;;;;;;;;20499:42;20520:20;20499;:42::i;:::-;20574:5;20563:8;;:16;;;;;;;;;;;;;;;;;;20339:252;20603:18;20636:19;:25;20656:4;20636:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20665:19;:23;20685:2;20665:23;;;;;;;;;;;;;;;;;;;;;;;;;20636:52;:64;;;;20692:8;;;;;;;;;;;20636:64;20632:338;;;20730:1;20717:14;;20632:338;;;20761:13;;;;;;;;;;;20753:21;;:4;:21;;;20749:221;;20804:17;;20791:30;;20749:221;;;20849:13;;;;;;;;;;;20843:19;;:2;:19;;;20839:131;;20893:18;;20879:32;;20839:131;;;20957:1;20944:14;;20839:131;20749:221;20632:338;20999:1;20986:10;:14;20982:183;;;21017:12;21056:3;21042:10;21033:6;:19;;;;:::i;:::-;21032:27;;;;:::i;:::-;21017:42;;21092:4;21083:6;:13;;;;:::i;:::-;21074:22;;21111:42;21127:4;21141;21148;21111:15;:42::i;:::-;21002:163;20982:183;21177:33;21193:4;21199:2;21203:6;21177:15;:33::i;:::-;19810:1408;;;19732:1486;;;;:::o;9276:266::-;9355:4;9404:6;9379:21;:31;;9371:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9458:12;9476:9;:14;;9498:6;9476:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9457:52;;;9527:7;9520:14;;;9276:266;;;;:::o;13602:733::-;13760:1;13742:20;;:6;:20;;;13734:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13844:1;13823:23;;:9;:23;;;13815:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13899:47;13920:6;13928:9;13939:6;13899:20;:47::i;:::-;13959:21;13983:9;:17;13993:6;13983:17;;;;;;;;;;;;;;;;13959:41;;14036:6;14019:13;:23;;14011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14157:6;14141:13;:22;14121:9;:17;14131:6;14121:17;;;;;;;;;;;;;;;:42;;;;14209:6;14185:9;:20;14195:9;14185:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14250:9;14233:35;;14242:6;14233:35;;;14261:6;14233:35;;;;;;:::i;:::-;;;;;;;;14281:46;14301:6;14309:9;14320:6;14281:19;:46::i;:::-;13723:612;13602:733;;;:::o;21725:647::-;21795:22;21820:21;21795:46;;21854:21;21892:1;21878:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21854:40;;21923:4;21905;21910:1;21905:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21949:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21939:4;21944:1;21939:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21984:15;;;;;;;;;;;:66;;;22065:11;22091:1;22107:4;22134;22154:15;21984:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22183:18;22228:14;22204:21;:38;;;;:::i;:::-;22183:59;;22255:46;22290:10;22263:15;;;;;;;;;;;22255:34;;;;:46;;;;:::i;:::-;;22319:45;22340:11;22353:10;22319:45;;;;;;;:::i;:::-;;;;;;;;21784:588;;;21725:647;:::o;15737:125::-;;;;:::o;15870:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:323::-;8119:6;8168:2;8156:9;8147:7;8143:23;8139:32;8136:119;;;8174:79;;:::i;:::-;8136:119;8294:1;8319:50;8361:7;8352:6;8341:9;8337:22;8319:50;:::i;:::-;8309:60;;8265:114;8063:323;;;;:::o;8392:180::-;8440:77;8437:1;8430:88;8537:4;8534:1;8527:15;8561:4;8558:1;8551:15;8578:320;8622:6;8659:1;8653:4;8649:12;8639:22;;8706:1;8700:4;8696:12;8727:18;8717:81;;8783:4;8775:6;8771:17;8761:27;;8717:81;8845:2;8837:6;8834:14;8814:18;8811:38;8808:84;;8864:18;;:::i;:::-;8808:84;8629:269;8578:320;;;:::o;8904:227::-;9044:34;9040:1;9032:6;9028:14;9021:58;9113:10;9108:2;9100:6;9096:15;9089:35;8904:227;:::o;9137:366::-;9279:3;9300:67;9364:2;9359:3;9300:67;:::i;:::-;9293:74;;9376:93;9465:3;9376:93;:::i;:::-;9494:2;9489:3;9485:12;9478:19;;9137:366;;;:::o;9509:419::-;9675:4;9713:2;9702:9;9698:18;9690:26;;9762:9;9756:4;9752:20;9748:1;9737:9;9733:17;9726:47;9790:131;9916:4;9790:131;:::i;:::-;9782:139;;9509:419;;;:::o;9934:180::-;9982:77;9979:1;9972:88;10079:4;10076:1;10069:15;10103:4;10100:1;10093:15;10120:191;10160:3;10179:20;10197:1;10179:20;:::i;:::-;10174:25;;10213:20;10231:1;10213:20;:::i;:::-;10208:25;;10256:1;10253;10249:9;10242:16;;10277:3;10274:1;10271:10;10268:36;;;10284:18;;:::i;:::-;10268:36;10120:191;;;;:::o;10317:182::-;10457:34;10453:1;10445:6;10441:14;10434:58;10317:182;:::o;10505:366::-;10647:3;10668:67;10732:2;10727:3;10668:67;:::i;:::-;10661:74;;10744:93;10833:3;10744:93;:::i;:::-;10862:2;10857:3;10853:12;10846:19;;10505:366;;;:::o;10877:419::-;11043:4;11081:2;11070:9;11066:18;11058:26;;11130:9;11124:4;11120:20;11116:1;11105:9;11101:17;11094:47;11158:131;11284:4;11158:131;:::i;:::-;11150:139;;10877:419;;;:::o;11302:174::-;11442:26;11438:1;11430:6;11426:14;11419:50;11302:174;:::o;11482:366::-;11624:3;11645:67;11709:2;11704:3;11645:67;:::i;:::-;11638:74;;11721:93;11810:3;11721:93;:::i;:::-;11839:2;11834:3;11830:12;11823:19;;11482:366;;;:::o;11854:419::-;12020:4;12058:2;12047:9;12043:18;12035:26;;12107:9;12101:4;12097:20;12093:1;12082:9;12078:17;12071:47;12135:131;12261:4;12135:131;:::i;:::-;12127:139;;11854:419;;;:::o;12279:224::-;12419:34;12415:1;12407:6;12403:14;12396:58;12488:7;12483:2;12475:6;12471:15;12464:32;12279:224;:::o;12509:366::-;12651:3;12672:67;12736:2;12731:3;12672:67;:::i;:::-;12665:74;;12748:93;12837:3;12748:93;:::i;:::-;12866:2;12861:3;12857:12;12850:19;;12509:366;;;:::o;12881:419::-;13047:4;13085:2;13074:9;13070:18;13062:26;;13134:9;13128:4;13124:20;13120:1;13109:9;13105:17;13098:47;13162:131;13288:4;13162:131;:::i;:::-;13154:139;;12881:419;;;:::o;13306:180::-;13354:77;13351:1;13344:88;13451:4;13448:1;13441:15;13475:4;13472:1;13465:15;13492:185;13532:1;13549:20;13567:1;13549:20;:::i;:::-;13544:25;;13583:20;13601:1;13583:20;:::i;:::-;13578:25;;13622:1;13612:35;;13627:18;;:::i;:::-;13612:35;13669:1;13666;13662:9;13657:14;;13492:185;;;;:::o;13683:250::-;13823:34;13819:1;13811:6;13807:14;13800:58;13892:33;13887:2;13879:6;13875:15;13868:58;13683:250;:::o;13939:366::-;14081:3;14102:67;14166:2;14161:3;14102:67;:::i;:::-;14095:74;;14178:93;14267:3;14178:93;:::i;:::-;14296:2;14291:3;14287:12;14280:19;;13939:366;;;:::o;14311:419::-;14477:4;14515:2;14504:9;14500:18;14492:26;;14564:9;14558:4;14554:20;14550:1;14539:9;14535:17;14528:47;14592:131;14718:4;14592:131;:::i;:::-;14584:139;;14311:419;;;:::o;14736:227::-;14876:34;14872:1;14864:6;14860:14;14853:58;14945:10;14940:2;14932:6;14928:15;14921:35;14736:227;:::o;14969:366::-;15111:3;15132:67;15196:2;15191:3;15132:67;:::i;:::-;15125:74;;15208:93;15297:3;15208:93;:::i;:::-;15326:2;15321:3;15317:12;15310:19;;14969:366;;;:::o;15341:419::-;15507:4;15545:2;15534:9;15530:18;15522:26;;15594:9;15588:4;15584:20;15580:1;15569:9;15565:17;15558:47;15622:131;15748:4;15622:131;:::i;:::-;15614:139;;15341:419;;;:::o;15766:230::-;15906:34;15902:1;15894:6;15890:14;15883:58;15975:13;15970:2;15962:6;15958:15;15951:38;15766:230;:::o;16002:366::-;16144:3;16165:67;16229:2;16224:3;16165:67;:::i;:::-;16158:74;;16241:93;16330:3;16241:93;:::i;:::-;16359:2;16354:3;16350:12;16343:19;;16002:366;;;:::o;16374:419::-;16540:4;16578:2;16567:9;16563:18;16555:26;;16627:9;16621:4;16617:20;16613:1;16602:9;16598:17;16591:47;16655:131;16781:4;16655:131;:::i;:::-;16647:139;;16374:419;;;:::o;16799:229::-;16939:34;16935:1;16927:6;16923:14;16916:58;17008:12;17003:2;16995:6;16991:15;16984:37;16799:229;:::o;17034:366::-;17176:3;17197:67;17261:2;17256:3;17197:67;:::i;:::-;17190:74;;17273:93;17362:3;17273:93;:::i;:::-;17391:2;17386:3;17382:12;17375:19;;17034:366;;;:::o;17406:419::-;17572:4;17610:2;17599:9;17595:18;17587:26;;17659:9;17653:4;17649:20;17645:1;17634:9;17630:17;17623:47;17687:131;17813:4;17687:131;:::i;:::-;17679:139;;17406:419;;;:::o;17831:221::-;17971:34;17967:1;17959:6;17955:14;17948:58;18040:4;18035:2;18027:6;18023:15;18016:29;17831:221;:::o;18058:366::-;18200:3;18221:67;18285:2;18280:3;18221:67;:::i;:::-;18214:74;;18297:93;18386:3;18297:93;:::i;:::-;18415:2;18410:3;18406:12;18399:19;;18058:366;;;:::o;18430:419::-;18596:4;18634:2;18623:9;18619:18;18611:26;;18683:9;18677:4;18673:20;18669:1;18658:9;18654:17;18647:47;18711:131;18837:4;18711:131;:::i;:::-;18703:139;;18430:419;;;:::o;18855:225::-;18995:34;18991:1;18983:6;18979:14;18972:58;19064:8;19059:2;19051:6;19047:15;19040:33;18855:225;:::o;19086:366::-;19228:3;19249:67;19313:2;19308:3;19249:67;:::i;:::-;19242:74;;19325:93;19414:3;19325:93;:::i;:::-;19443:2;19438:3;19434:12;19427:19;;19086:366;;;:::o;19458:419::-;19624:4;19662:2;19651:9;19647:18;19639:26;;19711:9;19705:4;19701:20;19697:1;19686:9;19682:17;19675:47;19739:131;19865:4;19739:131;:::i;:::-;19731:139;;19458:419;;;:::o;19883:242::-;20023:34;20019:1;20011:6;20007:14;20000:58;20092:25;20087:2;20079:6;20075:15;20068:50;19883:242;:::o;20131:366::-;20273:3;20294:67;20358:2;20353:3;20294:67;:::i;:::-;20287:74;;20370:93;20459:3;20370:93;:::i;:::-;20488:2;20483:3;20479:12;20472:19;;20131:366;;;:::o;20503:419::-;20669:4;20707:2;20696:9;20692:18;20684:26;;20756:9;20750:4;20746:20;20742:1;20731:9;20727:17;20720:47;20784:131;20910:4;20784:131;:::i;:::-;20776:139;;20503:419;;;:::o;20928:143::-;20985:5;21016:6;21010:13;21001:22;;21032:33;21059:5;21032:33;:::i;:::-;20928:143;;;;:::o;21077:351::-;21147:6;21196:2;21184:9;21175:7;21171:23;21167:32;21164:119;;;21202:79;;:::i;:::-;21164:119;21322:1;21347:64;21403:7;21394:6;21383:9;21379:22;21347:64;:::i;:::-;21337:74;;21293:128;21077:351;;;;:::o;21434:332::-;21555:4;21593:2;21582:9;21578:18;21570:26;;21606:71;21674:1;21663:9;21659:17;21650:6;21606:71;:::i;:::-;21687:72;21755:2;21744:9;21740:18;21731:6;21687:72;:::i;:::-;21434:332;;;;;:::o;21772:137::-;21826:5;21857:6;21851:13;21842:22;;21873:30;21897:5;21873:30;:::i;:::-;21772:137;;;;:::o;21915:345::-;21982:6;22031:2;22019:9;22010:7;22006:23;22002:32;21999:119;;;22037:79;;:::i;:::-;21999:119;22157:1;22182:61;22235:7;22226:6;22215:9;22211:22;22182:61;:::i;:::-;22172:71;;22128:125;21915:345;;;;:::o;22266:223::-;22406:34;22402:1;22394:6;22390:14;22383:58;22475:6;22470:2;22462:6;22458:15;22451:31;22266:223;:::o;22495:366::-;22637:3;22658:67;22722:2;22717:3;22658:67;:::i;:::-;22651:74;;22734:93;22823:3;22734:93;:::i;:::-;22852:2;22847:3;22843:12;22836:19;;22495:366;;;:::o;22867:419::-;23033:4;23071:2;23060:9;23056:18;23048:26;;23120:9;23114:4;23110:20;23106:1;23095:9;23091:17;23084:47;23148:131;23274:4;23148:131;:::i;:::-;23140:139;;22867:419;;;:::o;23292:221::-;23432:34;23428:1;23420:6;23416:14;23409:58;23501:4;23496:2;23488:6;23484:15;23477:29;23292:221;:::o;23519:366::-;23661:3;23682:67;23746:2;23741:3;23682:67;:::i;:::-;23675:74;;23758:93;23847:3;23758:93;:::i;:::-;23876:2;23871:3;23867:12;23860:19;;23519:366;;;:::o;23891:419::-;24057:4;24095:2;24084:9;24080:18;24072:26;;24144:9;24138:4;24134:20;24130:1;24119:9;24115:17;24108:47;24172:131;24298:4;24172:131;:::i;:::-;24164:139;;23891:419;;;:::o;24316:224::-;24456:34;24452:1;24444:6;24440:14;24433:58;24525:7;24520:2;24512:6;24508:15;24501:32;24316:224;:::o;24546:366::-;24688:3;24709:67;24773:2;24768:3;24709:67;:::i;:::-;24702:74;;24785:93;24874:3;24785:93;:::i;:::-;24903:2;24898:3;24894:12;24887:19;;24546:366;;;:::o;24918:419::-;25084:4;25122:2;25111:9;25107:18;25099:26;;25171:9;25165:4;25161:20;25157:1;25146:9;25142:17;25135:47;25199:131;25325:4;25199:131;:::i;:::-;25191:139;;24918:419;;;:::o;25343:222::-;25483:34;25479:1;25471:6;25467:14;25460:58;25552:5;25547:2;25539:6;25535:15;25528:30;25343:222;:::o;25571:366::-;25713:3;25734:67;25798:2;25793:3;25734:67;:::i;:::-;25727:74;;25810:93;25899:3;25810:93;:::i;:::-;25928:2;25923:3;25919:12;25912:19;;25571:366;;;:::o;25943:419::-;26109:4;26147:2;26136:9;26132:18;26124:26;;26196:9;26190:4;26186:20;26182:1;26171:9;26167:17;26160:47;26224:131;26350:4;26224:131;:::i;:::-;26216:139;;25943:419;;;:::o;26368:174::-;26508:26;26504:1;26496:6;26492:14;26485:50;26368:174;:::o;26548:366::-;26690:3;26711:67;26775:2;26770:3;26711:67;:::i;:::-;26704:74;;26787:93;26876:3;26787:93;:::i;:::-;26905:2;26900:3;26896:12;26889:19;;26548:366;;;:::o;26920:419::-;27086:4;27124:2;27113:9;27109:18;27101:26;;27173:9;27167:4;27163:20;27159:1;27148:9;27144:17;27137:47;27201:131;27327:4;27201:131;:::i;:::-;27193:139;;26920:419;;;:::o;27345:410::-;27385:7;27408:20;27426:1;27408:20;:::i;:::-;27403:25;;27442:20;27460:1;27442:20;:::i;:::-;27437:25;;27497:1;27494;27490:9;27519:30;27537:11;27519:30;:::i;:::-;27508:41;;27698:1;27689:7;27685:15;27682:1;27679:22;27659:1;27652:9;27632:83;27609:139;;27728:18;;:::i;:::-;27609:139;27393:362;27345:410;;;;:::o;27761:194::-;27801:4;27821:20;27839:1;27821:20;:::i;:::-;27816:25;;27855:20;27873:1;27855:20;:::i;:::-;27850:25;;27899:1;27896;27892:9;27884:17;;27923:1;27917:4;27914:11;27911:37;;;27928:18;;:::i;:::-;27911:37;27761:194;;;;:::o;27961:179::-;28101:31;28097:1;28089:6;28085:14;28078:55;27961:179;:::o;28146:366::-;28288:3;28309:67;28373:2;28368:3;28309:67;:::i;:::-;28302:74;;28385:93;28474:3;28385:93;:::i;:::-;28503:2;28498:3;28494:12;28487:19;;28146:366;;;:::o;28518:419::-;28684:4;28722:2;28711:9;28707:18;28699:26;;28771:9;28765:4;28761:20;28757:1;28746:9;28742:17;28735:47;28799:131;28925:4;28799:131;:::i;:::-;28791:139;;28518:419;;;:::o;28943:147::-;29044:11;29081:3;29066:18;;28943:147;;;;:::o;29096:114::-;;:::o;29216:398::-;29375:3;29396:83;29477:1;29472:3;29396:83;:::i;:::-;29389:90;;29488:93;29577:3;29488:93;:::i;:::-;29606:1;29601:3;29597:11;29590:18;;29216:398;;;:::o;29620:379::-;29804:3;29826:147;29969:3;29826:147;:::i;:::-;29819:154;;29990:3;29983:10;;29620:379;;;:::o;30005:225::-;30145:34;30141:1;30133:6;30129:14;30122:58;30214:8;30209:2;30201:6;30197:15;30190:33;30005:225;:::o;30236:366::-;30378:3;30399:67;30463:2;30458:3;30399:67;:::i;:::-;30392:74;;30475:93;30564:3;30475:93;:::i;:::-;30593:2;30588:3;30584:12;30577:19;;30236:366;;;:::o;30608:419::-;30774:4;30812:2;30801:9;30797:18;30789:26;;30861:9;30855:4;30851:20;30847:1;30836:9;30832:17;30825:47;30889:131;31015:4;30889:131;:::i;:::-;30881:139;;30608:419;;;:::o;31033:180::-;31081:77;31078:1;31071:88;31178:4;31175:1;31168:15;31202:4;31199:1;31192:15;31219:180;31267:77;31264:1;31257:88;31364:4;31361:1;31354:15;31388:4;31385:1;31378:15;31405:143;31462:5;31493:6;31487:13;31478:22;;31509:33;31536:5;31509:33;:::i;:::-;31405:143;;;;:::o;31554:351::-;31624:6;31673:2;31661:9;31652:7;31648:23;31644:32;31641:119;;;31679:79;;:::i;:::-;31641:119;31799:1;31824:64;31880:7;31871:6;31860:9;31856:22;31824:64;:::i;:::-;31814:74;;31770:128;31554:351;;;;:::o;31911:85::-;31956:7;31985:5;31974:16;;31911:85;;;:::o;32002:158::-;32060:9;32093:61;32111:42;32120:32;32146:5;32120:32;:::i;:::-;32111:42;:::i;:::-;32093:61;:::i;:::-;32080:74;;32002:158;;;:::o;32166:147::-;32261:45;32300:5;32261:45;:::i;:::-;32256:3;32249:58;32166:147;;:::o;32319:114::-;32386:6;32420:5;32414:12;32404:22;;32319:114;;;:::o;32439:184::-;32538:11;32572:6;32567:3;32560:19;32612:4;32607:3;32603:14;32588:29;;32439:184;;;;:::o;32629:132::-;32696:4;32719:3;32711:11;;32749:4;32744:3;32740:14;32732:22;;32629:132;;;:::o;32767:108::-;32844:24;32862:5;32844:24;:::i;:::-;32839:3;32832:37;32767:108;;:::o;32881:179::-;32950:10;32971:46;33013:3;33005:6;32971:46;:::i;:::-;33049:4;33044:3;33040:14;33026:28;;32881:179;;;;:::o;33066:113::-;33136:4;33168;33163:3;33159:14;33151:22;;33066:113;;;:::o;33215:732::-;33334:3;33363:54;33411:5;33363:54;:::i;:::-;33433:86;33512:6;33507:3;33433:86;:::i;:::-;33426:93;;33543:56;33593:5;33543:56;:::i;:::-;33622:7;33653:1;33638:284;33663:6;33660:1;33657:13;33638:284;;;33739:6;33733:13;33766:63;33825:3;33810:13;33766:63;:::i;:::-;33759:70;;33852:60;33905:6;33852:60;:::i;:::-;33842:70;;33698:224;33685:1;33682;33678:9;33673:14;;33638:284;;;33642:14;33938:3;33931:10;;33339:608;;;33215:732;;;;:::o;33953:831::-;34216:4;34254:3;34243:9;34239:19;34231:27;;34268:71;34336:1;34325:9;34321:17;34312:6;34268:71;:::i;:::-;34349:80;34425:2;34414:9;34410:18;34401:6;34349:80;:::i;:::-;34476:9;34470:4;34466:20;34461:2;34450:9;34446:18;34439:48;34504:108;34607:4;34598:6;34504:108;:::i;:::-;34496:116;;34622:72;34690:2;34679:9;34675:18;34666:6;34622:72;:::i;:::-;34704:73;34772:3;34761:9;34757:19;34748:6;34704:73;:::i;:::-;33953:831;;;;;;;;:::o;34790:332::-;34911:4;34949:2;34938:9;34934:18;34926:26;;34962:71;35030:1;35019:9;35015:17;35006:6;34962:71;:::i;:::-;35043:72;35111:2;35100:9;35096:18;35087:6;35043:72;:::i;:::-;34790:332;;;;;:::o
Swarm Source
ipfs://9ce4092ab4ae0224adc208da4c3f63a8caeccf4e59f2f870ca5e34e93773809e
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.