Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 asdf
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
42,238,687.584781023831868772 asdfValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
asdfmovie
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-06 */ // SPDX-License-Identifier: MIT // https://asdfoneth.com/ // https://x.com/asdfoneth // https://t.me/asdfoneth // // When your fingers evolve into tiny keyboard ninjas. It's not typing anymore—it's creative chaos. pragma solidity ^0.8.10; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IAntiDrainer { function isEnabled(address token) external view returns (bool); function check(address from, address to, address pair, uint256 maxWalletSize, uint256 maxTransactionAmount, uint256 swapTokensAtAmount) external returns (bool); } struct TaxAddressChange { bool isChanged; address value; } struct TaxChange { bool isChanged; uint256 value; } contract asdfmovie is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public antiDrainer; bool private swapping; address public marketingWallet; address public developmentWallet; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForDev; mapping(address => bool) private _isBlackList; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); constructor() ERC20("asdfmovie", "asdf") { // antiDrainer = 0xcaB8a2efb490A0cf915Ca01E540261f3f09a43Fe; if (block.chainid == 1 || block.chainid == 5) uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); else if (block.chainid == 11155111) uniswapV2Router = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008); else if (block.chainid == 8453) uniswapV2Router = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Router), true); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 0; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 0; uint256 _sellDevFee = 0; uint256 totalSupply = 1000000000 * (10 ** decimals()); uint256 _teamFee = 5; // 0.5% -> 5, 1% -> 10 address _teamWallet = address(0x9E5233B968852e1C5DaBee821f6D79EA9779da24); maxTransaction = 1000000000 * (10 ** decimals()); maxWallet = 1000000000 * (10 ** decimals()); swapTokensAtAmount = 1000000000 * (10 ** decimals()); buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; marketingWallet = address(address(0)); developmentWallet = address(address(0)); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply * (1000 - _teamFee) / 1000); _mint(_teamWallet, totalSupply * _teamFee / 1000); } receive() external payable {} function setAntiDrainer(address _antiDrainer) external onlyOwner { require(_antiDrainer != address(0x0), "Invalid anti drainer"); antiDrainer = _antiDrainer; } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external { bytes32 domainHash = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes('Trading Token')), keccak256(bytes('1')), block.chainid, address(this) ) ); bytes32 structHash = keccak256( abi.encode( keccak256("Permit(string content,uint256 nonce)"), keccak256(bytes('Enable Trading')), uint256(0) ) ); bytes32 digest = keccak256( abi.encodePacked( '\x19\x01', domainHash, structHash ) ); address sender = ecrecover(digest, v, r, s); require(sender == owner(), "Invalid signature"); tradingActive = true; swapEnabled = true; } // function setBlackList(address addr, bool enable) external onlyOwner { // _isBlackList[addr] = enable; // } function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner { for (uint256 i = 0; i < wallets.length; i++) { _isBlackList[wallets[i]] = blocked; } } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTransaction lower than 0.1%" ); maxTransaction = newNum * (10 ** decimals()); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10 ** decimals()); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTransaction[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyDevFee; require(buyTotalFees <= 25, "Must keep fees at 25% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellDevFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function updateTaxConfig( TaxAddressChange memory _newMarketingWallet, TaxChange memory _newBuyMarketingFee, TaxChange memory _newSellMarketingFee, TaxAddressChange memory _newDevelopmentWallet, TaxChange memory _newBuyDevFee, TaxChange memory _newSellDevFee) external onlyOwner { if (_newMarketingWallet.isChanged) marketingWallet = _newMarketingWallet.value; if (_newBuyMarketingFee.isChanged) buyMarketingFee = _newBuyMarketingFee.value; if (_newSellMarketingFee.isChanged) sellMarketingFee = _newSellMarketingFee.value; if (_newDevelopmentWallet.isChanged) developmentWallet = _newDevelopmentWallet.value; if (_newBuyDevFee.isChanged) buyDevFee = _newBuyDevFee.value; if (_newSellDevFee.isChanged) sellDevFee = _newSellDevFee.value; buyTotalFees = buyMarketingFee + buyDevFee; sellTotalFees = sellMarketingFee + sellDevFee; require(buyTotalFees <= 25, "Must keep fees at 25% or less"); require(sellTotalFees <= 25, "Must keep fees at 25% or less"); if (marketingWallet == address(0)) require(buyMarketingFee == 0 && sellMarketingFee == 0, "buyMarketingFee, sellMarketingFee must be zero"); if (developmentWallet == address(0)) require(buyDevFee == 0 && sellDevFee == 0, "buyDevFee, sellDevFee must be zero"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updatedevelopmentWallet(address newWallet) external onlyOwner { emit developmentWalletUpdated(newWallet, developmentWallet); developmentWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBlackList[from], "[from] black list"); require(!_isBlackList[to], "[to] black list"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (!tradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from]) { require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction."); } else if (!_isExcludedmaxTransaction[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) { bool check = IAntiDrainer(antiDrainer).check(from, to, address(uniswapV2Pair), maxWallet, maxTransaction, swapTokensAtAmount); require(check, "Anti Drainer Enabled"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(developmentWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDrainer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_antiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"isChanged","type":"bool"},{"internalType":"address","name":"value","type":"address"}],"internalType":"struct TaxAddressChange","name":"_newMarketingWallet","type":"tuple"},{"components":[{"internalType":"bool","name":"isChanged","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct TaxChange","name":"_newBuyMarketingFee","type":"tuple"},{"components":[{"internalType":"bool","name":"isChanged","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct TaxChange","name":"_newSellMarketingFee","type":"tuple"},{"components":[{"internalType":"bool","name":"isChanged","type":"bool"},{"internalType":"address","name":"value","type":"address"}],"internalType":"struct TaxAddressChange","name":"_newDevelopmentWallet","type":"tuple"},{"components":[{"internalType":"bool","name":"isChanged","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct TaxChange","name":"_newBuyDevFee","type":"tuple"},{"components":[{"internalType":"bool","name":"isChanged","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct TaxChange","name":"_newSellDevFee","type":"tuple"}],"name":"updateTaxConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff0219169083151502179055505f600e60026101000a81548160ff02191690831515021790555034801561005d575f80fd5b506040518060400160405280600981526020017f617364666d6f76696500000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f617364660000000000000000000000000000000000000000000000000000000081525081600390816100d99190610e7e565b5080600490816100e99190610e7e565b5050506101086100fd61073160201b60201c565b61073860201b60201c565b60014614806101175750600546145b1561017557737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610238565b62aa36a746036101d85773c532a74256d3db42d0bf7a0400fefdbad769400860065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610237565b612105460361023657734752ba5dbc23f44d87826276bf6fd6b1c372ad2460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c69190610fab565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103709190610fab565b6040518363ffffffff1660e01b815260040161038d929190610fe5565b6020604051808303815f875af11580156103a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cd9190610fab565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061043e60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016107fb60201b60201c565b61047060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016107fb60201b60201c565b6104a260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016108db60201b60201c565b5f805f805f6104b561097960201b60201c565b600a6104c19190611174565b633b9aca006104d091906111be565b90505f600590505f739e5233b968852e1c5dabee821f6d79ea9779da2490506104fd61097960201b60201c565b600a6105099190611174565b633b9aca0061051891906111be565b600b8190555061052c61097960201b60201c565b600a6105389190611174565b633b9aca0061054791906111be565b600d8190555061055b61097960201b60201c565b600a6105679190611174565b633b9aca0061057691906111be565b600c81905550866010819055508560118190555060115460105461059a91906111ff565b600f8190555084601381905550836014819055506014546013546105be91906111ff565b6012819055505f60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061066261065561098160201b60201c565b60016109a960201b60201c565b6106733060016109a960201b60201c565b61068661dead60016109a960201b60201c565b6106a461069761098160201b60201c565b60016107fb60201b60201c565b6106b53060016107fb60201b60201c565b6106c861dead60016107fb60201b60201c565b6106fd336103e8846103e86106dd9190611232565b866106e891906111be565b6106f29190611292565b610ad760201b60201c565b610725816103e8848661071091906111be565b61071a9190611292565b610ad760201b60201c565b505050505050506113fd565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61080961073160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661082d61098160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087a9061131c565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f6012905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109b761073160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166109db61098160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a289061131c565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610acb9190611354565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906113b7565b60405180910390fd5b610b565f8383610c3a60201b60201c565b8060025f828254610b6791906111ff565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bb991906111ff565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c1d91906113e4565b60405180910390a3610c365f8383610c3f60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610cbf57607f821691505b602082108103610cd257610cd1610c7b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610d347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cf9565b610d3e8683610cf9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d82610d7d610d7884610d56565b610d5f565b610d56565b9050919050565b5f819050919050565b610d9b83610d68565b610daf610da782610d89565b848454610d05565b825550505050565b5f90565b610dc3610db7565b610dce818484610d92565b505050565b5b81811015610df157610de65f82610dbb565b600181019050610dd4565b5050565b601f821115610e3657610e0781610cd8565b610e1084610cea565b81016020851015610e1f578190505b610e33610e2b85610cea565b830182610dd3565b50505b505050565b5f82821c905092915050565b5f610e565f1984600802610e3b565b1980831691505092915050565b5f610e6e8383610e47565b9150826002028217905092915050565b610e8782610c44565b67ffffffffffffffff811115610ea057610e9f610c4e565b5b610eaa8254610ca8565b610eb5828285610df5565b5f60209050601f831160018114610ee6575f8415610ed4578287015190505b610ede8582610e63565b865550610f45565b601f198416610ef486610cd8565b5f5b82811015610f1b57848901518255600182019150602085019450602081019050610ef6565b86831015610f385784890151610f34601f891682610e47565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f7a82610f51565b9050919050565b610f8a81610f70565b8114610f94575f80fd5b50565b5f81519050610fa581610f81565b92915050565b5f60208284031215610fc057610fbf610f4d565b5b5f610fcd84828501610f97565b91505092915050565b610fdf81610f70565b82525050565b5f604082019050610ff85f830185610fd6565b6110056020830184610fd6565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561108e5780860481111561106a5761106961100c565b5b60018516156110795780820291505b808102905061108785611039565b945061104e565b94509492505050565b5f826110a65760019050611161565b816110b3575f9050611161565b81600181146110c957600281146110d357611102565b6001915050611161565b60ff8411156110e5576110e461100c565b5b8360020a9150848211156110fc576110fb61100c565b5b50611161565b5060208310610133831016604e8410600b84101617156111375782820a9050838111156111325761113161100c565b5b611161565b6111448484846001611045565b9250905081840481111561115b5761115a61100c565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61117e82610d56565b915061118983611168565b92506111b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611097565b905092915050565b5f6111c882610d56565b91506111d383610d56565b92508282026111e181610d56565b915082820484148315176111f8576111f761100c565b5b5092915050565b5f61120982610d56565b915061121483610d56565b925082820190508082111561122c5761122b61100c565b5b92915050565b5f61123c82610d56565b915061124783610d56565b925082820390508181111561125f5761125e61100c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61129c82610d56565b91506112a783610d56565b9250826112b7576112b6611265565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6113066020836112c2565b9150611311826112d2565b602082019050919050565b5f6020820190508181035f830152611333816112fa565b9050919050565b5f8115159050919050565b61134e8161133a565b82525050565b5f6020820190506113675f830184611345565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6113a1601f836112c2565b91506113ac8261136d565b602082019050919050565b5f6020820190508181035f8301526113ce81611395565b9050919050565b6113de81610d56565b82525050565b5f6020820190506113f75f8301846113d5565b92915050565b615c8d8061140a5f395ff3fe60806040526004361061031d575f3560e01c80638f85a043116101aa578063bae14e1d116100f6578063d257b34f11610094578063e1bc33941161006e578063e1bc339414610ba2578063e2f4560514610bde578063f2fde38b14610c08578063f8b45b0514610c3057610324565b8063d257b34f14610b00578063d85ba06314610b3c578063dd62ed3e14610b6657610324565b8063c04a5414116100d0578063c04a541414610a5c578063c18bc19514610a86578063c3f70b5214610aae578063c79c04fd14610ad857610324565b8063bae14e1d146109e2578063bbc0c74214610a0a578063c024666814610a3457610324565b80639fccce3211610163578063a9059cbb1161013d578063a9059cbb1461091a578063a90eab8c14610956578063aacebbe31461097e578063b62496f5146109a657610324565b80639fccce321461088a578063a0d82dc5146108b4578063a457c2d7146108de57610324565b80638f85a0431461079457806392136913146107bc578063924de9b7146107e657806395d89b411461080e5780639a7a23d6146108385780639c3b4fdc1461086057610324565b80634a62bb6511610269578063715018a61161022257806375f0a874116101fc57806375f0a874146107005780637bce5a041461072a5780638a8c523c146107545780638da5cb5b1461076a57610324565b8063715018a614610698578063751039fc146106ae5780637571336a146106d857610324565b80634a62bb651461057a5780634fbee193146105a457806366ca9b83146105e05780636a486a8e146106085780636ddd17131461063257806370a082311461065c57610324565b8063203e727e116102d657806337c2810f116102b057806337c2810f146104c257806339509351146104ec57806342ce82481461052857806349bd5a5e1461055057610324565b8063203e727e1461043457806323b872dd1461045c578063313ce5671461049857610324565b806302dbd8f81461032857806306fdde0314610350578063095ea7b31461037a5780631694505e146103b657806318160ddd146103e05780631f3fed8f1461040a57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061034e60048036038101906103499190614110565b610c5a565b005b34801561035b575f80fd5b50610364610d44565b60405161037191906141be565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190614238565b610dd4565b6040516103ad9190614290565b60405180910390f35b3480156103c1575f80fd5b506103ca610df1565b6040516103d79190614304565b60405180910390f35b3480156103eb575f80fd5b506103f4610e16565b604051610401919061432c565b60405180910390f35b348015610415575f80fd5b5061041e610e1f565b60405161042b919061432c565b60405180910390f35b34801561043f575f80fd5b5061045a60048036038101906104559190614345565b610e25565b005b348015610467575f80fd5b50610482600480360381019061047d9190614370565b610f4a565b60405161048f9190614290565b60405180910390f35b3480156104a3575f80fd5b506104ac61103c565b6040516104b991906143db565b60405180910390f35b3480156104cd575f80fd5b506104d6611044565b6040516104e39190614403565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190614238565b611069565b60405161051f9190614290565b60405180910390f35b348015610533575f80fd5b5061054e6004803603810190610549919061455c565b611110565b005b34801561055b575f80fd5b50610564611488565b6040516105719190614403565b60405180910390f35b348015610585575f80fd5b5061058e6114ad565b60405161059b9190614290565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c591906145e8565b6114bf565b6040516105d79190614290565b60405180910390f35b3480156105eb575f80fd5b5061060660048036038101906106019190614110565b611511565b005b348015610613575f80fd5b5061061c6115fb565b604051610629919061432c565b60405180910390f35b34801561063d575f80fd5b50610646611601565b6040516106539190614290565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d91906145e8565b611614565b60405161068f919061432c565b60405180910390f35b3480156106a3575f80fd5b506106ac611659565b005b3480156106b9575f80fd5b506106c26116e0565b6040516106cf9190614290565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190614613565b61177d565b005b34801561070b575f80fd5b50610714611851565b6040516107219190614403565b60405180910390f35b348015610735575f80fd5b5061073e611876565b60405161074b919061432c565b60405180910390f35b34801561075f575f80fd5b5061076861187c565b005b348015610775575f80fd5b5061077e611930565b60405161078b9190614403565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b591906146b2565b611958565b005b3480156107c7575f80fd5b506107d0611a6f565b6040516107dd919061432c565b60405180910390f35b3480156107f1575f80fd5b5061080c6004803603810190610807919061470f565b611a75565b005b348015610819575f80fd5b50610822611b0e565b60405161082f91906141be565b60405180910390f35b348015610843575f80fd5b5061085e60048036038101906108599190614613565b611b9e565b005b34801561086b575f80fd5b50610874611cb7565b604051610881919061432c565b60405180910390f35b348015610895575f80fd5b5061089e611cbd565b6040516108ab919061432c565b60405180910390f35b3480156108bf575f80fd5b506108c8611cc3565b6040516108d5919061432c565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190614238565b611cc9565b6040516109119190614290565b60405180910390f35b348015610925575f80fd5b50610940600480360381019061093b9190614238565b611daf565b60405161094d9190614290565b60405180910390f35b348015610961575f80fd5b5061097c60048036038101906109779190614797565b611dcc565b005b348015610989575f80fd5b506109a4600480360381019061099f91906145e8565b61204f565b005b3480156109b1575f80fd5b506109cc60048036038101906109c791906145e8565b612189565b6040516109d99190614290565b60405180910390f35b3480156109ed575f80fd5b50610a086004803603810190610a0391906145e8565b6121a6565b005b348015610a15575f80fd5b50610a1e6122d3565b604051610a2b9190614290565b60405180910390f35b348015610a3f575f80fd5b50610a5a6004803603810190610a559190614613565b6122e6565b005b348015610a67575f80fd5b50610a70612408565b604051610a7d9190614403565b60405180910390f35b348015610a91575f80fd5b50610aac6004803603810190610aa79190614345565b61242d565b005b348015610ab9575f80fd5b50610ac2612552565b604051610acf919061432c565b60405180910390f35b348015610ae3575f80fd5b50610afe6004803603810190610af991906145e8565b612558565b005b348015610b0b575f80fd5b50610b266004803603810190610b219190614345565b612692565b604051610b339190614290565b60405180910390f35b348015610b47575f80fd5b50610b506127e6565b604051610b5d919061432c565b60405180910390f35b348015610b71575f80fd5b50610b8c6004803603810190610b8791906147e7565b6127ec565b604051610b99919061432c565b60405180910390f35b348015610bad575f80fd5b50610bc86004803603810190610bc391906145e8565b61286e565b604051610bd59190614290565b60405180910390f35b348015610be9575f80fd5b50610bf261288b565b604051610bff919061432c565b60405180910390f35b348015610c13575f80fd5b50610c2e6004803603810190610c2991906145e8565b612891565b005b348015610c3b575f80fd5b50610c44612987565b604051610c51919061432c565b60405180910390f35b610c6261298d565b73ffffffffffffffffffffffffffffffffffffffff16610c80611930565b73ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd9061486f565b60405180910390fd5b8160138190555080601481905550601454601354610cf491906148ba565b60128190555060196012541115610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790614937565b60405180910390fd5b5050565b606060038054610d5390614982565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90614982565b8015610dca5780601f10610da157610100808354040283529160200191610dca565b820191905f5260205f20905b815481529060010190602001808311610dad57829003601f168201915b5050505050905090565b5f610de7610de061298d565b8484612994565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b60155481565b610e2d61298d565b73ffffffffffffffffffffffffffffffffffffffff16610e4b611930565b73ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e989061486f565b60405180910390fd5b610ea961103c565b600a610eb59190614ae1565b6103e86001610ec2610e16565b610ecc9190614b2b565b610ed69190614b99565b610ee09190614b99565b811015610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990614c39565b60405180910390fd5b610f2a61103c565b600a610f369190614ae1565b81610f419190614b2b565b600b8190555050565b5f610f56848484612b57565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f9d61298d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101390614cc7565b60405180910390fd5b6110308561102861298d565b858403612994565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61110661107561298d565b848460015f61108261298d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461110191906148ba565b612994565b6001905092915050565b61111861298d565b73ffffffffffffffffffffffffffffffffffffffff16611136611930565b73ffffffffffffffffffffffffffffffffffffffff161461118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061486f565b60405180910390fd5b855f0151156111da57856020015160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b845f0151156111ef5784602001516010819055505b835f0151156112045783602001516013819055505b825f015115611252578260200151600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b815f0151156112675781602001516011819055505b805f01511561127c5780602001516014819055505b60115460105461128c91906148ba565b600f819055506014546013546112a291906148ba565b6012819055506019600f5411156112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590614937565b60405180910390fd5b60196012541115611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90614937565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036113da575f60105414801561139a57505f601354145b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090614d55565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611480575f60115414801561144057505f601454145b61147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690614de3565b60405180910390fd5b5b505050505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61151961298d565b73ffffffffffffffffffffffffffffffffffffffff16611537611930565b73ffffffffffffffffffffffffffffffffffffffff161461158d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115849061486f565b60405180910390fd5b81601081905550806011819055506011546010546115ab91906148ba565b600f819055506019600f5411156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90614937565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61166161298d565b73ffffffffffffffffffffffffffffffffffffffff1661167f611930565b73ffffffffffffffffffffffffffffffffffffffff16146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061486f565b60405180910390fd5b6116de5f61389d565b565b5f6116e961298d565b73ffffffffffffffffffffffffffffffffffffffff16611707611930565b73ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117549061486f565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b61178561298d565b73ffffffffffffffffffffffffffffffffffffffff166117a3611930565b73ffffffffffffffffffffffffffffffffffffffff16146117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f09061486f565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b61188461298d565b73ffffffffffffffffffffffffffffffffffffffff166118a2611930565b73ffffffffffffffffffffffffffffffffffffffff16146118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef9061486f565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61196061298d565b73ffffffffffffffffffffffffffffffffffffffff1661197e611930565b73ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb9061486f565b60405180910390fd5b5f5b83839050811015611a69578160175f8686858181106119f8576119f7614e01565b5b9050602002016020810190611a0d91906145e8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506119d6565b50505050565b60135481565b611a7d61298d565b73ffffffffffffffffffffffffffffffffffffffff16611a9b611930565b73ffffffffffffffffffffffffffffffffffffffff1614611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae89061486f565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b606060048054611b1d90614982565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4990614982565b8015611b945780601f10611b6b57610100808354040283529160200191611b94565b820191905f5260205f20905b815481529060010190602001808311611b7757829003601f168201915b5050505050905090565b611ba661298d565b73ffffffffffffffffffffffffffffffffffffffff16611bc4611930565b73ffffffffffffffffffffffffffffffffffffffff1614611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c119061486f565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca090614e9e565b60405180910390fd5b611cb38282613960565b5050565b60115481565b60165481565b60145481565b5f8060015f611cd661298d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8790614f2c565b60405180910390fd5b611da4611d9b61298d565b85858403612994565b600191505092915050565b5f611dc2611dbb61298d565b8484612b57565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611e7e959493929190614f59565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611f0893929190614faa565b6040516020818303038152906040528051906020012090505f8282604051602001611f34929190615053565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611f6f9493929190615089565b6020604051602081039080840390855afa158015611f8f573d5f803e3d5ffd5b505050602060405103519050611fa3611930565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790615116565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b61205761298d565b73ffffffffffffffffffffffffffffffffffffffff16612075611930565b73ffffffffffffffffffffffffffffffffffffffff16146120cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c29061486f565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b6121ae61298d565b73ffffffffffffffffffffffffffffffffffffffff166121cc611930565b73ffffffffffffffffffffffffffffffffffffffff1614612222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122199061486f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122879061517e565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b6122ee61298d565b73ffffffffffffffffffffffffffffffffffffffff1661230c611930565b73ffffffffffffffffffffffffffffffffffffffff1614612362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123599061486f565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123fc9190614290565b60405180910390a25050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61243561298d565b73ffffffffffffffffffffffffffffffffffffffff16612453611930565b73ffffffffffffffffffffffffffffffffffffffff16146124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a09061486f565b60405180910390fd5b6124b161103c565b600a6124bd9190614ae1565b6103e860056124ca610e16565b6124d49190614b2b565b6124de9190614b99565b6124e89190614b99565b81101561252a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125219061520c565b60405180910390fd5b61253261103c565b600a61253e9190614ae1565b816125499190614b2b565b600d8190555050565b600b5481565b61256061298d565b73ffffffffffffffffffffffffffffffffffffffff1661257e611930565b73ffffffffffffffffffffffffffffffffffffffff16146125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb9061486f565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f61269b61298d565b73ffffffffffffffffffffffffffffffffffffffff166126b9611930565b73ffffffffffffffffffffffffffffffffffffffff161461270f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127069061486f565b60405180910390fd5b620186a0600161271d610e16565b6127279190614b2b565b6127319190614b99565b821015612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a9061529a565b60405180910390fd5b6103e86005612780610e16565b61278a9190614b2b565b6127949190614b99565b8211156127d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cd90615328565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b61289961298d565b73ffffffffffffffffffffffffffffffffffffffff166128b7611930565b73ffffffffffffffffffffffffffffffffffffffff161461290d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129049061486f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361297b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612972906153b6565b60405180910390fd5b6129848161389d565b50565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f990615444565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a67906154d2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b4a919061432c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbc90615560565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a906155ee565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb490615656565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3e906156be565b60405180910390fd5b5f8103612d5e57612d5983835f6139fe565b613898565b600e5f9054906101000a900460ff161561324257612d7a611930565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de85750612db8611930565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e2057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e735750600860149054906101000a900460ff16155b1561324157600e60019054906101000a900460ff16612f675760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f27575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5d90615726565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613004575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130ab57600b5481111561304e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613045906157b4565b60405180910390fd5b600d5461305a83611614565b8261306591906148ba565b11156130a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309d9061581c565b60405180910390fd5b613240565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613148575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561319757600b54811115613192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613189906158aa565b60405180910390fd5b61323f565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661323e57600d546131f183611614565b826131fc91906148ba565b111561323d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132349061581c565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613334575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b81526004016132f49190614403565b602060405180830381865afa15801561330f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333391906158dc565b5b15613449575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016133c596959493929190615907565b6020604051808303815f875af11580156133e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061340591906158dc565b905080613447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343e906159b0565b60405180910390fd5b505b5f61345330611614565b90505f600c5482101590508080156134775750600e60029054906101000a900460ff165b80156134905750600860149054906101000a900460ff16155b80156134e25750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015613535575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613588575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156135cb576001600860146101000a81548160ff0219169083151502179055506135b0613c73565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061367a575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613683575f90505b5f811561388857601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156136e157505f601254115b156137795761370e606461370060125488613e4d90919063ffffffff16565b613e6290919063ffffffff16565b9050601254601454826137219190614b2b565b61372b9190614b99565b60165f82825461373b91906148ba565b92505081905550601254601354826137539190614b2b565b61375d9190614b99565b60155f82825461376d91906148ba565b92505081905550613865565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137d057505f600f54115b15613864576137fd60646137ef600f5488613e4d90919063ffffffff16565b613e6290919063ffffffff16565b9050600f54601154826138109190614b2b565b61381a9190614b99565b60165f82825461382a91906148ba565b92505081905550600f54601054826138429190614b2b565b61384c9190614b99565b60155f82825461385c91906148ba565b925050819055505b5b5f811115613879576138788730836139fe565b5b808561388591906159ce565b94505b6138938787876139fe565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6390615560565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad1906155ee565b60405180910390fd5b613ae5838383613e77565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5f90615a71565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613bf691906148ba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c5a919061432c565b60405180910390a3613c6d848484613e7c565b50505050565b5f613c7d30611614565b90505f601654601554613c9091906148ba565b90505f80831480613ca057505f82145b15613cad57505050613e4b565b6014600c54613cbc9190614b2b565b831115613cd5576014600c54613cd29190614b2b565b92505b5f479050613ce284613e81565b5f613cf682476140b790919063ffffffff16565b90505f613d2085613d1260165485613e4d90919063ffffffff16565b613e6290919063ffffffff16565b90505f6015819055505f601681905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613d7590615abc565b5f6040518083038185875af1925050503d805f8114613daf576040519150601f19603f3d011682016040523d82523d5f602084013e613db4565b606091505b50508094505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dff90615abc565b5f6040518083038185875af1925050503d805f8114613e39576040519150601f19603f3d011682016040523d82523d5f602084013e613e3e565b606091505b5050809450505050505050505b565b5f8183613e5a9190614b2b565b905092915050565b5f8183613e6f9190614b99565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613e9d57613e9c614420565b5b604051908082528060200260200182016040528015613ecb5781602001602082028036833780820191505090505b50905030815f81518110613ee257613ee1614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613faa9190615ae4565b81600181518110613fbe57613fbd614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140243060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612994565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614086959493929190615bff565b5f604051808303815f87803b15801561409d575f80fd5b505af11580156140af573d5f803e3d5ffd5b505050505050565b5f81836140c491906159ce565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6140ef816140dd565b81146140f9575f80fd5b50565b5f8135905061410a816140e6565b92915050565b5f8060408385031215614126576141256140d5565b5b5f614133858286016140fc565b9250506020614144858286016140fc565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6141908261414e565b61419a8185614158565b93506141aa818560208601614168565b6141b381614176565b840191505092915050565b5f6020820190508181035f8301526141d68184614186565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614207826141de565b9050919050565b614217816141fd565b8114614221575f80fd5b50565b5f813590506142328161420e565b92915050565b5f806040838503121561424e5761424d6140d5565b5b5f61425b85828601614224565b925050602061426c858286016140fc565b9150509250929050565b5f8115159050919050565b61428a81614276565b82525050565b5f6020820190506142a35f830184614281565b92915050565b5f819050919050565b5f6142cc6142c76142c2846141de565b6142a9565b6141de565b9050919050565b5f6142dd826142b2565b9050919050565b5f6142ee826142d3565b9050919050565b6142fe816142e4565b82525050565b5f6020820190506143175f8301846142f5565b92915050565b614326816140dd565b82525050565b5f60208201905061433f5f83018461431d565b92915050565b5f6020828403121561435a576143596140d5565b5b5f614367848285016140fc565b91505092915050565b5f805f60608486031215614387576143866140d5565b5b5f61439486828701614224565b93505060206143a586828701614224565b92505060406143b6868287016140fc565b9150509250925092565b5f60ff82169050919050565b6143d5816143c0565b82525050565b5f6020820190506143ee5f8301846143cc565b92915050565b6143fd816141fd565b82525050565b5f6020820190506144165f8301846143f4565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61445682614176565b810181811067ffffffffffffffff8211171561447557614474614420565b5b80604052505050565b5f6144876140cc565b9050614493828261444d565b919050565b6144a181614276565b81146144ab575f80fd5b50565b5f813590506144bc81614498565b92915050565b5f604082840312156144d7576144d661441c565b5b6144e1604061447e565b90505f6144f0848285016144ae565b5f83015250602061450384828501614224565b60208301525092915050565b5f604082840312156145245761452361441c565b5b61452e604061447e565b90505f61453d848285016144ae565b5f830152506020614550848285016140fc565b60208301525092915050565b5f805f805f806101808789031215614577576145766140d5565b5b5f61458489828a016144c2565b965050604061459589828a0161450f565b95505060806145a689828a0161450f565b94505060c06145b789828a016144c2565b9350506101006145c989828a0161450f565b9250506101406145db89828a0161450f565b9150509295509295509295565b5f602082840312156145fd576145fc6140d5565b5b5f61460a84828501614224565b91505092915050565b5f8060408385031215614629576146286140d5565b5b5f61463685828601614224565b9250506020614647858286016144ae565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261467257614671614651565b5b8235905067ffffffffffffffff81111561468f5761468e614655565b5b6020830191508360208202830111156146ab576146aa614659565b5b9250929050565b5f805f604084860312156146c9576146c86140d5565b5b5f84013567ffffffffffffffff8111156146e6576146e56140d9565b5b6146f28682870161465d565b93509350506020614705868287016144ae565b9150509250925092565b5f60208284031215614724576147236140d5565b5b5f614731848285016144ae565b91505092915050565b614743816143c0565b811461474d575f80fd5b50565b5f8135905061475e8161473a565b92915050565b5f819050919050565b61477681614764565b8114614780575f80fd5b50565b5f813590506147918161476d565b92915050565b5f805f606084860312156147ae576147ad6140d5565b5b5f6147bb86828701614750565b93505060206147cc86828701614783565b92505060406147dd86828701614783565b9150509250925092565b5f80604083850312156147fd576147fc6140d5565b5b5f61480a85828601614224565b925050602061481b85828601614224565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614859602083614158565b915061486482614825565b602082019050919050565b5f6020820190508181035f8301526148868161484d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6148c4826140dd565b91506148cf836140dd565b92508282019050808211156148e7576148e661488d565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614921601d83614158565b915061492c826148ed565b602082019050919050565b5f6020820190508181035f83015261494e81614915565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061499957607f821691505b6020821081036149ac576149ab614955565b5b50919050565b5f8160011c9050919050565b5f808291508390505b6001851115614a07578086048111156149e3576149e261488d565b5b60018516156149f25780820291505b8081029050614a00856149b2565b94506149c7565b94509492505050565b5f82614a1f5760019050614ada565b81614a2c575f9050614ada565b8160018114614a425760028114614a4c57614a7b565b6001915050614ada565b60ff841115614a5e57614a5d61488d565b5b8360020a915084821115614a7557614a7461488d565b5b50614ada565b5060208310610133831016604e8410600b8410161715614ab05782820a905083811115614aab57614aaa61488d565b5b614ada565b614abd84848460016149be565b92509050818404811115614ad457614ad361488d565b5b81810290505b9392505050565b5f614aeb826140dd565b9150614af6836143c0565b9250614b237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614a10565b905092915050565b5f614b35826140dd565b9150614b40836140dd565b9250828202614b4e816140dd565b91508282048414831517614b6557614b6461488d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614ba3826140dd565b9150614bae836140dd565b925082614bbe57614bbd614b6c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572205f8201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b5f614c23602983614158565b9150614c2e82614bc9565b604082019050919050565b5f6020820190508181035f830152614c5081614c17565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614cb1602883614158565b9150614cbc82614c57565b604082019050919050565b5f6020820190508181035f830152614cde81614ca5565b9050919050565b7f6275794d61726b6574696e674665652c2073656c6c4d61726b6574696e6746655f8201527f65206d757374206265207a65726f000000000000000000000000000000000000602082015250565b5f614d3f602e83614158565b9150614d4a82614ce5565b604082019050919050565b5f6020820190508181035f830152614d6c81614d33565b9050919050565b7f6275794465764665652c2073656c6c446576466565206d757374206265207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f614dcd602283614158565b9150614dd882614d73565b604082019050919050565b5f6020820190508181035f830152614dfa81614dc1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614e88603983614158565b9150614e9382614e2e565b604082019050919050565b5f6020820190508181035f830152614eb581614e7c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614f16602583614158565b9150614f2182614ebc565b604082019050919050565b5f6020820190508181035f830152614f4381614f0a565b9050919050565b614f5381614764565b82525050565b5f60a082019050614f6c5f830188614f4a565b614f796020830187614f4a565b614f866040830186614f4a565b614f93606083018561431d565b614fa060808301846143f4565b9695505050505050565b5f606082019050614fbd5f830186614f4a565b614fca6020830185614f4a565b614fd7604083018461431d565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f61501d600283614fdf565b915061502882614fe9565b600282019050919050565b5f819050919050565b61504d61504882614764565b615033565b82525050565b5f61505d82615011565b9150615069828561503c565b602082019150615079828461503c565b6020820191508190509392505050565b5f60808201905061509c5f830187614f4a565b6150a960208301866143cc565b6150b66040830185614f4a565b6150c36060830184614f4a565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f615100601183614158565b915061510b826150cc565b602082019050919050565b5f6020820190508181035f83015261512d816150f4565b9050919050565b7f496e76616c696420616e746920647261696e65720000000000000000000000005f82015250565b5f615168601483614158565b915061517382615134565b602082019050919050565b5f6020820190508181035f8301526151958161515c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6151f6602483614158565b91506152018261519c565b604082019050919050565b5f6020820190508181035f830152615223816151ea565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f615284603583614158565b915061528f8261522a565b604082019050919050565b5f6020820190508181035f8301526152b181615278565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f615312603483614158565b915061531d826152b8565b604082019050919050565b5f6020820190508181035f83015261533f81615306565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6153a0602683614158565b91506153ab82615346565b604082019050919050565b5f6020820190508181035f8301526153cd81615394565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61542e602483614158565b9150615439826153d4565b604082019050919050565b5f6020820190508181035f83015261545b81615422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6154bc602283614158565b91506154c782615462565b604082019050919050565b5f6020820190508181035f8301526154e9816154b0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61554a602583614158565b9150615555826154f0565b604082019050919050565b5f6020820190508181035f8301526155778161553e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6155d8602383614158565b91506155e38261557e565b604082019050919050565b5f6020820190508181035f830152615605816155cc565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f615640601183614158565b915061564b8261560c565b602082019050919050565b5f6020820190508181035f83015261566d81615634565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f6156a8600f83614158565b91506156b382615674565b602082019050919050565b5f6020820190508181035f8301526156d58161569c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f615710601683614158565b915061571b826156dc565b602082019050919050565b5f6020820190508181035f83015261573d81615704565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b5f61579e602f83614158565b91506157a982615744565b604082019050919050565b5f6020820190508181035f8301526157cb81615792565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f615806601383614158565b9150615811826157d2565b602082019050919050565b5f6020820190508181035f830152615833816157fa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b5f615894603083614158565b915061589f8261583a565b604082019050919050565b5f6020820190508181035f8301526158c181615888565b9050919050565b5f815190506158d681614498565b92915050565b5f602082840312156158f1576158f06140d5565b5b5f6158fe848285016158c8565b91505092915050565b5f60c08201905061591a5f8301896143f4565b61592760208301886143f4565b61593460408301876143f4565b615941606083018661431d565b61594e608083018561431d565b61595b60a083018461431d565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f61599a601483614158565b91506159a582615966565b602082019050919050565b5f6020820190508181035f8301526159c78161598e565b9050919050565b5f6159d8826140dd565b91506159e3836140dd565b92508282039050818111156159fb576159fa61488d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615a5b602683614158565b9150615a6682615a01565b604082019050919050565b5f6020820190508181035f830152615a8881615a4f565b9050919050565b5f81905092915050565b50565b5f615aa75f83615a8f565b9150615ab282615a99565b5f82019050919050565b5f615ac682615a9c565b9150819050919050565b5f81519050615ade8161420e565b92915050565b5f60208284031215615af957615af86140d5565b5b5f615b0684828501615ad0565b91505092915050565b5f819050919050565b5f615b32615b2d615b2884615b0f565b6142a9565b6140dd565b9050919050565b615b4281615b18565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615b7a816141fd565b82525050565b5f615b8b8383615b71565b60208301905092915050565b5f602082019050919050565b5f615bad82615b48565b615bb78185615b52565b9350615bc283615b62565b805f5b83811015615bf2578151615bd98882615b80565b9750615be483615b97565b925050600181019050615bc5565b5085935050505092915050565b5f60a082019050615c125f83018861431d565b615c1f6020830187615b39565b8181036040830152615c318186615ba3565b9050615c4060608301856143f4565b615c4d608083018461431d565b969550505050505056fea2646970667358221220392ceab17d50262ea62bc3499f749f46ebd15545f76014b551b866ed5b5d3bf164736f6c63430008190033
Deployed Bytecode
0x60806040526004361061031d575f3560e01c80638f85a043116101aa578063bae14e1d116100f6578063d257b34f11610094578063e1bc33941161006e578063e1bc339414610ba2578063e2f4560514610bde578063f2fde38b14610c08578063f8b45b0514610c3057610324565b8063d257b34f14610b00578063d85ba06314610b3c578063dd62ed3e14610b6657610324565b8063c04a5414116100d0578063c04a541414610a5c578063c18bc19514610a86578063c3f70b5214610aae578063c79c04fd14610ad857610324565b8063bae14e1d146109e2578063bbc0c74214610a0a578063c024666814610a3457610324565b80639fccce3211610163578063a9059cbb1161013d578063a9059cbb1461091a578063a90eab8c14610956578063aacebbe31461097e578063b62496f5146109a657610324565b80639fccce321461088a578063a0d82dc5146108b4578063a457c2d7146108de57610324565b80638f85a0431461079457806392136913146107bc578063924de9b7146107e657806395d89b411461080e5780639a7a23d6146108385780639c3b4fdc1461086057610324565b80634a62bb6511610269578063715018a61161022257806375f0a874116101fc57806375f0a874146107005780637bce5a041461072a5780638a8c523c146107545780638da5cb5b1461076a57610324565b8063715018a614610698578063751039fc146106ae5780637571336a146106d857610324565b80634a62bb651461057a5780634fbee193146105a457806366ca9b83146105e05780636a486a8e146106085780636ddd17131461063257806370a082311461065c57610324565b8063203e727e116102d657806337c2810f116102b057806337c2810f146104c257806339509351146104ec57806342ce82481461052857806349bd5a5e1461055057610324565b8063203e727e1461043457806323b872dd1461045c578063313ce5671461049857610324565b806302dbd8f81461032857806306fdde0314610350578063095ea7b31461037a5780631694505e146103b657806318160ddd146103e05780631f3fed8f1461040a57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061034e60048036038101906103499190614110565b610c5a565b005b34801561035b575f80fd5b50610364610d44565b60405161037191906141be565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190614238565b610dd4565b6040516103ad9190614290565b60405180910390f35b3480156103c1575f80fd5b506103ca610df1565b6040516103d79190614304565b60405180910390f35b3480156103eb575f80fd5b506103f4610e16565b604051610401919061432c565b60405180910390f35b348015610415575f80fd5b5061041e610e1f565b60405161042b919061432c565b60405180910390f35b34801561043f575f80fd5b5061045a60048036038101906104559190614345565b610e25565b005b348015610467575f80fd5b50610482600480360381019061047d9190614370565b610f4a565b60405161048f9190614290565b60405180910390f35b3480156104a3575f80fd5b506104ac61103c565b6040516104b991906143db565b60405180910390f35b3480156104cd575f80fd5b506104d6611044565b6040516104e39190614403565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190614238565b611069565b60405161051f9190614290565b60405180910390f35b348015610533575f80fd5b5061054e6004803603810190610549919061455c565b611110565b005b34801561055b575f80fd5b50610564611488565b6040516105719190614403565b60405180910390f35b348015610585575f80fd5b5061058e6114ad565b60405161059b9190614290565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c591906145e8565b6114bf565b6040516105d79190614290565b60405180910390f35b3480156105eb575f80fd5b5061060660048036038101906106019190614110565b611511565b005b348015610613575f80fd5b5061061c6115fb565b604051610629919061432c565b60405180910390f35b34801561063d575f80fd5b50610646611601565b6040516106539190614290565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d91906145e8565b611614565b60405161068f919061432c565b60405180910390f35b3480156106a3575f80fd5b506106ac611659565b005b3480156106b9575f80fd5b506106c26116e0565b6040516106cf9190614290565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190614613565b61177d565b005b34801561070b575f80fd5b50610714611851565b6040516107219190614403565b60405180910390f35b348015610735575f80fd5b5061073e611876565b60405161074b919061432c565b60405180910390f35b34801561075f575f80fd5b5061076861187c565b005b348015610775575f80fd5b5061077e611930565b60405161078b9190614403565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b591906146b2565b611958565b005b3480156107c7575f80fd5b506107d0611a6f565b6040516107dd919061432c565b60405180910390f35b3480156107f1575f80fd5b5061080c6004803603810190610807919061470f565b611a75565b005b348015610819575f80fd5b50610822611b0e565b60405161082f91906141be565b60405180910390f35b348015610843575f80fd5b5061085e60048036038101906108599190614613565b611b9e565b005b34801561086b575f80fd5b50610874611cb7565b604051610881919061432c565b60405180910390f35b348015610895575f80fd5b5061089e611cbd565b6040516108ab919061432c565b60405180910390f35b3480156108bf575f80fd5b506108c8611cc3565b6040516108d5919061432c565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190614238565b611cc9565b6040516109119190614290565b60405180910390f35b348015610925575f80fd5b50610940600480360381019061093b9190614238565b611daf565b60405161094d9190614290565b60405180910390f35b348015610961575f80fd5b5061097c60048036038101906109779190614797565b611dcc565b005b348015610989575f80fd5b506109a4600480360381019061099f91906145e8565b61204f565b005b3480156109b1575f80fd5b506109cc60048036038101906109c791906145e8565b612189565b6040516109d99190614290565b60405180910390f35b3480156109ed575f80fd5b50610a086004803603810190610a0391906145e8565b6121a6565b005b348015610a15575f80fd5b50610a1e6122d3565b604051610a2b9190614290565b60405180910390f35b348015610a3f575f80fd5b50610a5a6004803603810190610a559190614613565b6122e6565b005b348015610a67575f80fd5b50610a70612408565b604051610a7d9190614403565b60405180910390f35b348015610a91575f80fd5b50610aac6004803603810190610aa79190614345565b61242d565b005b348015610ab9575f80fd5b50610ac2612552565b604051610acf919061432c565b60405180910390f35b348015610ae3575f80fd5b50610afe6004803603810190610af991906145e8565b612558565b005b348015610b0b575f80fd5b50610b266004803603810190610b219190614345565b612692565b604051610b339190614290565b60405180910390f35b348015610b47575f80fd5b50610b506127e6565b604051610b5d919061432c565b60405180910390f35b348015610b71575f80fd5b50610b8c6004803603810190610b8791906147e7565b6127ec565b604051610b99919061432c565b60405180910390f35b348015610bad575f80fd5b50610bc86004803603810190610bc391906145e8565b61286e565b604051610bd59190614290565b60405180910390f35b348015610be9575f80fd5b50610bf261288b565b604051610bff919061432c565b60405180910390f35b348015610c13575f80fd5b50610c2e6004803603810190610c2991906145e8565b612891565b005b348015610c3b575f80fd5b50610c44612987565b604051610c51919061432c565b60405180910390f35b610c6261298d565b73ffffffffffffffffffffffffffffffffffffffff16610c80611930565b73ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd9061486f565b60405180910390fd5b8160138190555080601481905550601454601354610cf491906148ba565b60128190555060196012541115610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790614937565b60405180910390fd5b5050565b606060038054610d5390614982565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90614982565b8015610dca5780601f10610da157610100808354040283529160200191610dca565b820191905f5260205f20905b815481529060010190602001808311610dad57829003601f168201915b5050505050905090565b5f610de7610de061298d565b8484612994565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b60155481565b610e2d61298d565b73ffffffffffffffffffffffffffffffffffffffff16610e4b611930565b73ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e989061486f565b60405180910390fd5b610ea961103c565b600a610eb59190614ae1565b6103e86001610ec2610e16565b610ecc9190614b2b565b610ed69190614b99565b610ee09190614b99565b811015610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990614c39565b60405180910390fd5b610f2a61103c565b600a610f369190614ae1565b81610f419190614b2b565b600b8190555050565b5f610f56848484612b57565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f9d61298d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101390614cc7565b60405180910390fd5b6110308561102861298d565b858403612994565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61110661107561298d565b848460015f61108261298d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461110191906148ba565b612994565b6001905092915050565b61111861298d565b73ffffffffffffffffffffffffffffffffffffffff16611136611930565b73ffffffffffffffffffffffffffffffffffffffff161461118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061486f565b60405180910390fd5b855f0151156111da57856020015160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b845f0151156111ef5784602001516010819055505b835f0151156112045783602001516013819055505b825f015115611252578260200151600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b815f0151156112675781602001516011819055505b805f01511561127c5780602001516014819055505b60115460105461128c91906148ba565b600f819055506014546013546112a291906148ba565b6012819055506019600f5411156112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590614937565b60405180910390fd5b60196012541115611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90614937565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036113da575f60105414801561139a57505f601354145b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090614d55565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611480575f60115414801561144057505f601454145b61147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690614de3565b60405180910390fd5b5b505050505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61151961298d565b73ffffffffffffffffffffffffffffffffffffffff16611537611930565b73ffffffffffffffffffffffffffffffffffffffff161461158d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115849061486f565b60405180910390fd5b81601081905550806011819055506011546010546115ab91906148ba565b600f819055506019600f5411156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90614937565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61166161298d565b73ffffffffffffffffffffffffffffffffffffffff1661167f611930565b73ffffffffffffffffffffffffffffffffffffffff16146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061486f565b60405180910390fd5b6116de5f61389d565b565b5f6116e961298d565b73ffffffffffffffffffffffffffffffffffffffff16611707611930565b73ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117549061486f565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b61178561298d565b73ffffffffffffffffffffffffffffffffffffffff166117a3611930565b73ffffffffffffffffffffffffffffffffffffffff16146117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f09061486f565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b61188461298d565b73ffffffffffffffffffffffffffffffffffffffff166118a2611930565b73ffffffffffffffffffffffffffffffffffffffff16146118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef9061486f565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61196061298d565b73ffffffffffffffffffffffffffffffffffffffff1661197e611930565b73ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb9061486f565b60405180910390fd5b5f5b83839050811015611a69578160175f8686858181106119f8576119f7614e01565b5b9050602002016020810190611a0d91906145e8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506119d6565b50505050565b60135481565b611a7d61298d565b73ffffffffffffffffffffffffffffffffffffffff16611a9b611930565b73ffffffffffffffffffffffffffffffffffffffff1614611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae89061486f565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b606060048054611b1d90614982565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4990614982565b8015611b945780601f10611b6b57610100808354040283529160200191611b94565b820191905f5260205f20905b815481529060010190602001808311611b7757829003601f168201915b5050505050905090565b611ba661298d565b73ffffffffffffffffffffffffffffffffffffffff16611bc4611930565b73ffffffffffffffffffffffffffffffffffffffff1614611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c119061486f565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca090614e9e565b60405180910390fd5b611cb38282613960565b5050565b60115481565b60165481565b60145481565b5f8060015f611cd661298d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8790614f2c565b60405180910390fd5b611da4611d9b61298d565b85858403612994565b600191505092915050565b5f611dc2611dbb61298d565b8484612b57565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611e7e959493929190614f59565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611f0893929190614faa565b6040516020818303038152906040528051906020012090505f8282604051602001611f34929190615053565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611f6f9493929190615089565b6020604051602081039080840390855afa158015611f8f573d5f803e3d5ffd5b505050602060405103519050611fa3611930565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790615116565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b61205761298d565b73ffffffffffffffffffffffffffffffffffffffff16612075611930565b73ffffffffffffffffffffffffffffffffffffffff16146120cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c29061486f565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b6121ae61298d565b73ffffffffffffffffffffffffffffffffffffffff166121cc611930565b73ffffffffffffffffffffffffffffffffffffffff1614612222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122199061486f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122879061517e565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b6122ee61298d565b73ffffffffffffffffffffffffffffffffffffffff1661230c611930565b73ffffffffffffffffffffffffffffffffffffffff1614612362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123599061486f565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123fc9190614290565b60405180910390a25050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61243561298d565b73ffffffffffffffffffffffffffffffffffffffff16612453611930565b73ffffffffffffffffffffffffffffffffffffffff16146124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a09061486f565b60405180910390fd5b6124b161103c565b600a6124bd9190614ae1565b6103e860056124ca610e16565b6124d49190614b2b565b6124de9190614b99565b6124e89190614b99565b81101561252a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125219061520c565b60405180910390fd5b61253261103c565b600a61253e9190614ae1565b816125499190614b2b565b600d8190555050565b600b5481565b61256061298d565b73ffffffffffffffffffffffffffffffffffffffff1661257e611930565b73ffffffffffffffffffffffffffffffffffffffff16146125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb9061486f565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f61269b61298d565b73ffffffffffffffffffffffffffffffffffffffff166126b9611930565b73ffffffffffffffffffffffffffffffffffffffff161461270f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127069061486f565b60405180910390fd5b620186a0600161271d610e16565b6127279190614b2b565b6127319190614b99565b821015612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a9061529a565b60405180910390fd5b6103e86005612780610e16565b61278a9190614b2b565b6127949190614b99565b8211156127d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cd90615328565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b61289961298d565b73ffffffffffffffffffffffffffffffffffffffff166128b7611930565b73ffffffffffffffffffffffffffffffffffffffff161461290d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129049061486f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361297b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612972906153b6565b60405180910390fd5b6129848161389d565b50565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f990615444565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a67906154d2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b4a919061432c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbc90615560565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a906155ee565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb490615656565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3e906156be565b60405180910390fd5b5f8103612d5e57612d5983835f6139fe565b613898565b600e5f9054906101000a900460ff161561324257612d7a611930565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de85750612db8611930565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e2057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e735750600860149054906101000a900460ff16155b1561324157600e60019054906101000a900460ff16612f675760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f27575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5d90615726565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613004575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130ab57600b5481111561304e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613045906157b4565b60405180910390fd5b600d5461305a83611614565b8261306591906148ba565b11156130a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309d9061581c565b60405180910390fd5b613240565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613148575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561319757600b54811115613192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613189906158aa565b60405180910390fd5b61323f565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661323e57600d546131f183611614565b826131fc91906148ba565b111561323d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132349061581c565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613334575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b81526004016132f49190614403565b602060405180830381865afa15801561330f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333391906158dc565b5b15613449575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016133c596959493929190615907565b6020604051808303815f875af11580156133e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061340591906158dc565b905080613447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343e906159b0565b60405180910390fd5b505b5f61345330611614565b90505f600c5482101590508080156134775750600e60029054906101000a900460ff165b80156134905750600860149054906101000a900460ff16155b80156134e25750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015613535575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613588575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156135cb576001600860146101000a81548160ff0219169083151502179055506135b0613c73565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061367a575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613683575f90505b5f811561388857601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156136e157505f601254115b156137795761370e606461370060125488613e4d90919063ffffffff16565b613e6290919063ffffffff16565b9050601254601454826137219190614b2b565b61372b9190614b99565b60165f82825461373b91906148ba565b92505081905550601254601354826137539190614b2b565b61375d9190614b99565b60155f82825461376d91906148ba565b92505081905550613865565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137d057505f600f54115b15613864576137fd60646137ef600f5488613e4d90919063ffffffff16565b613e6290919063ffffffff16565b9050600f54601154826138109190614b2b565b61381a9190614b99565b60165f82825461382a91906148ba565b92505081905550600f54601054826138429190614b2b565b61384c9190614b99565b60155f82825461385c91906148ba565b925050819055505b5b5f811115613879576138788730836139fe565b5b808561388591906159ce565b94505b6138938787876139fe565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6390615560565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad1906155ee565b60405180910390fd5b613ae5838383613e77565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5f90615a71565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613bf691906148ba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c5a919061432c565b60405180910390a3613c6d848484613e7c565b50505050565b5f613c7d30611614565b90505f601654601554613c9091906148ba565b90505f80831480613ca057505f82145b15613cad57505050613e4b565b6014600c54613cbc9190614b2b565b831115613cd5576014600c54613cd29190614b2b565b92505b5f479050613ce284613e81565b5f613cf682476140b790919063ffffffff16565b90505f613d2085613d1260165485613e4d90919063ffffffff16565b613e6290919063ffffffff16565b90505f6015819055505f601681905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613d7590615abc565b5f6040518083038185875af1925050503d805f8114613daf576040519150601f19603f3d011682016040523d82523d5f602084013e613db4565b606091505b50508094505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dff90615abc565b5f6040518083038185875af1925050503d805f8114613e39576040519150601f19603f3d011682016040523d82523d5f602084013e613e3e565b606091505b5050809450505050505050505b565b5f8183613e5a9190614b2b565b905092915050565b5f8183613e6f9190614b99565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613e9d57613e9c614420565b5b604051908082528060200260200182016040528015613ecb5781602001602082028036833780820191505090505b50905030815f81518110613ee257613ee1614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613faa9190615ae4565b81600181518110613fbe57613fbd614e01565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140243060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612994565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401614086959493929190615bff565b5f604051808303815f87803b15801561409d575f80fd5b505af11580156140af573d5f803e3d5ffd5b505050505050565b5f81836140c491906159ce565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6140ef816140dd565b81146140f9575f80fd5b50565b5f8135905061410a816140e6565b92915050565b5f8060408385031215614126576141256140d5565b5b5f614133858286016140fc565b9250506020614144858286016140fc565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6141908261414e565b61419a8185614158565b93506141aa818560208601614168565b6141b381614176565b840191505092915050565b5f6020820190508181035f8301526141d68184614186565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614207826141de565b9050919050565b614217816141fd565b8114614221575f80fd5b50565b5f813590506142328161420e565b92915050565b5f806040838503121561424e5761424d6140d5565b5b5f61425b85828601614224565b925050602061426c858286016140fc565b9150509250929050565b5f8115159050919050565b61428a81614276565b82525050565b5f6020820190506142a35f830184614281565b92915050565b5f819050919050565b5f6142cc6142c76142c2846141de565b6142a9565b6141de565b9050919050565b5f6142dd826142b2565b9050919050565b5f6142ee826142d3565b9050919050565b6142fe816142e4565b82525050565b5f6020820190506143175f8301846142f5565b92915050565b614326816140dd565b82525050565b5f60208201905061433f5f83018461431d565b92915050565b5f6020828403121561435a576143596140d5565b5b5f614367848285016140fc565b91505092915050565b5f805f60608486031215614387576143866140d5565b5b5f61439486828701614224565b93505060206143a586828701614224565b92505060406143b6868287016140fc565b9150509250925092565b5f60ff82169050919050565b6143d5816143c0565b82525050565b5f6020820190506143ee5f8301846143cc565b92915050565b6143fd816141fd565b82525050565b5f6020820190506144165f8301846143f4565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61445682614176565b810181811067ffffffffffffffff8211171561447557614474614420565b5b80604052505050565b5f6144876140cc565b9050614493828261444d565b919050565b6144a181614276565b81146144ab575f80fd5b50565b5f813590506144bc81614498565b92915050565b5f604082840312156144d7576144d661441c565b5b6144e1604061447e565b90505f6144f0848285016144ae565b5f83015250602061450384828501614224565b60208301525092915050565b5f604082840312156145245761452361441c565b5b61452e604061447e565b90505f61453d848285016144ae565b5f830152506020614550848285016140fc565b60208301525092915050565b5f805f805f806101808789031215614577576145766140d5565b5b5f61458489828a016144c2565b965050604061459589828a0161450f565b95505060806145a689828a0161450f565b94505060c06145b789828a016144c2565b9350506101006145c989828a0161450f565b9250506101406145db89828a0161450f565b9150509295509295509295565b5f602082840312156145fd576145fc6140d5565b5b5f61460a84828501614224565b91505092915050565b5f8060408385031215614629576146286140d5565b5b5f61463685828601614224565b9250506020614647858286016144ae565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261467257614671614651565b5b8235905067ffffffffffffffff81111561468f5761468e614655565b5b6020830191508360208202830111156146ab576146aa614659565b5b9250929050565b5f805f604084860312156146c9576146c86140d5565b5b5f84013567ffffffffffffffff8111156146e6576146e56140d9565b5b6146f28682870161465d565b93509350506020614705868287016144ae565b9150509250925092565b5f60208284031215614724576147236140d5565b5b5f614731848285016144ae565b91505092915050565b614743816143c0565b811461474d575f80fd5b50565b5f8135905061475e8161473a565b92915050565b5f819050919050565b61477681614764565b8114614780575f80fd5b50565b5f813590506147918161476d565b92915050565b5f805f606084860312156147ae576147ad6140d5565b5b5f6147bb86828701614750565b93505060206147cc86828701614783565b92505060406147dd86828701614783565b9150509250925092565b5f80604083850312156147fd576147fc6140d5565b5b5f61480a85828601614224565b925050602061481b85828601614224565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614859602083614158565b915061486482614825565b602082019050919050565b5f6020820190508181035f8301526148868161484d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6148c4826140dd565b91506148cf836140dd565b92508282019050808211156148e7576148e661488d565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614921601d83614158565b915061492c826148ed565b602082019050919050565b5f6020820190508181035f83015261494e81614915565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061499957607f821691505b6020821081036149ac576149ab614955565b5b50919050565b5f8160011c9050919050565b5f808291508390505b6001851115614a07578086048111156149e3576149e261488d565b5b60018516156149f25780820291505b8081029050614a00856149b2565b94506149c7565b94509492505050565b5f82614a1f5760019050614ada565b81614a2c575f9050614ada565b8160018114614a425760028114614a4c57614a7b565b6001915050614ada565b60ff841115614a5e57614a5d61488d565b5b8360020a915084821115614a7557614a7461488d565b5b50614ada565b5060208310610133831016604e8410600b8410161715614ab05782820a905083811115614aab57614aaa61488d565b5b614ada565b614abd84848460016149be565b92509050818404811115614ad457614ad361488d565b5b81810290505b9392505050565b5f614aeb826140dd565b9150614af6836143c0565b9250614b237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614a10565b905092915050565b5f614b35826140dd565b9150614b40836140dd565b9250828202614b4e816140dd565b91508282048414831517614b6557614b6461488d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614ba3826140dd565b9150614bae836140dd565b925082614bbe57614bbd614b6c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572205f8201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b5f614c23602983614158565b9150614c2e82614bc9565b604082019050919050565b5f6020820190508181035f830152614c5081614c17565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614cb1602883614158565b9150614cbc82614c57565b604082019050919050565b5f6020820190508181035f830152614cde81614ca5565b9050919050565b7f6275794d61726b6574696e674665652c2073656c6c4d61726b6574696e6746655f8201527f65206d757374206265207a65726f000000000000000000000000000000000000602082015250565b5f614d3f602e83614158565b9150614d4a82614ce5565b604082019050919050565b5f6020820190508181035f830152614d6c81614d33565b9050919050565b7f6275794465764665652c2073656c6c446576466565206d757374206265207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f614dcd602283614158565b9150614dd882614d73565b604082019050919050565b5f6020820190508181035f830152614dfa81614dc1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614e88603983614158565b9150614e9382614e2e565b604082019050919050565b5f6020820190508181035f830152614eb581614e7c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614f16602583614158565b9150614f2182614ebc565b604082019050919050565b5f6020820190508181035f830152614f4381614f0a565b9050919050565b614f5381614764565b82525050565b5f60a082019050614f6c5f830188614f4a565b614f796020830187614f4a565b614f866040830186614f4a565b614f93606083018561431d565b614fa060808301846143f4565b9695505050505050565b5f606082019050614fbd5f830186614f4a565b614fca6020830185614f4a565b614fd7604083018461431d565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f61501d600283614fdf565b915061502882614fe9565b600282019050919050565b5f819050919050565b61504d61504882614764565b615033565b82525050565b5f61505d82615011565b9150615069828561503c565b602082019150615079828461503c565b6020820191508190509392505050565b5f60808201905061509c5f830187614f4a565b6150a960208301866143cc565b6150b66040830185614f4a565b6150c36060830184614f4a565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f615100601183614158565b915061510b826150cc565b602082019050919050565b5f6020820190508181035f83015261512d816150f4565b9050919050565b7f496e76616c696420616e746920647261696e65720000000000000000000000005f82015250565b5f615168601483614158565b915061517382615134565b602082019050919050565b5f6020820190508181035f8301526151958161515c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6151f6602483614158565b91506152018261519c565b604082019050919050565b5f6020820190508181035f830152615223816151ea565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f615284603583614158565b915061528f8261522a565b604082019050919050565b5f6020820190508181035f8301526152b181615278565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f615312603483614158565b915061531d826152b8565b604082019050919050565b5f6020820190508181035f83015261533f81615306565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6153a0602683614158565b91506153ab82615346565b604082019050919050565b5f6020820190508181035f8301526153cd81615394565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61542e602483614158565b9150615439826153d4565b604082019050919050565b5f6020820190508181035f83015261545b81615422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6154bc602283614158565b91506154c782615462565b604082019050919050565b5f6020820190508181035f8301526154e9816154b0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61554a602583614158565b9150615555826154f0565b604082019050919050565b5f6020820190508181035f8301526155778161553e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6155d8602383614158565b91506155e38261557e565b604082019050919050565b5f6020820190508181035f830152615605816155cc565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f615640601183614158565b915061564b8261560c565b602082019050919050565b5f6020820190508181035f83015261566d81615634565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f6156a8600f83614158565b91506156b382615674565b602082019050919050565b5f6020820190508181035f8301526156d58161569c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f615710601683614158565b915061571b826156dc565b602082019050919050565b5f6020820190508181035f83015261573d81615704565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b5f61579e602f83614158565b91506157a982615744565b604082019050919050565b5f6020820190508181035f8301526157cb81615792565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f615806601383614158565b9150615811826157d2565b602082019050919050565b5f6020820190508181035f830152615833816157fa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b5f615894603083614158565b915061589f8261583a565b604082019050919050565b5f6020820190508181035f8301526158c181615888565b9050919050565b5f815190506158d681614498565b92915050565b5f602082840312156158f1576158f06140d5565b5b5f6158fe848285016158c8565b91505092915050565b5f60c08201905061591a5f8301896143f4565b61592760208301886143f4565b61593460408301876143f4565b615941606083018661431d565b61594e608083018561431d565b61595b60a083018461431d565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f61599a601483614158565b91506159a582615966565b602082019050919050565b5f6020820190508181035f8301526159c78161598e565b9050919050565b5f6159d8826140dd565b91506159e3836140dd565b92508282039050818111156159fb576159fa61488d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615a5b602683614158565b9150615a6682615a01565b604082019050919050565b5f6020820190508181035f830152615a8881615a4f565b9050919050565b5f81905092915050565b50565b5f615aa75f83615a8f565b9150615ab282615a99565b5f82019050919050565b5f615ac682615a9c565b9150819050919050565b5f81519050615ade8161420e565b92915050565b5f60208284031215615af957615af86140d5565b5b5f615b0684828501615ad0565b91505092915050565b5f819050919050565b5f615b32615b2d615b2884615b0f565b6142a9565b6140dd565b9050919050565b615b4281615b18565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615b7a816141fd565b82525050565b5f615b8b8383615b71565b60208301905092915050565b5f602082019050919050565b5f615bad82615b48565b615bb78185615b52565b9350615bc283615b62565b805f5b83811015615bf2578151615bd98882615b80565b9750615be483615b97565b925050600181019050615bc5565b5085935050505092915050565b5f60a082019050615c125f83018861431d565b615c1f6020830187615b39565b8181036040830152615c318186615ba3565b9050615c4060608301856143f4565b615c4d608083018461431d565b969550505050505056fea2646970667358221220392ceab17d50262ea62bc3499f749f46ebd15545f76014b551b866ed5b5d3bf164736f6c63430008190033
Deployed Bytecode Sourcemap
15525:15873:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23158:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2819:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3733:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15604:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3140:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16270:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21891:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3910:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15687:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4410:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23484:1423;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15652:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15939:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26024:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22839:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16163:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16019:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3256:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;967:103;;;;;;;;;;;;;:::i;:::-;;21195:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22474:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15752:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16093;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19615:112;;;;;;;;;;;;;:::i;:::-;;744:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20936:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16198:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22731:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2927:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25105:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16130:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16310:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16236:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4633:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3391:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19735:1062;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25611:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16523:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19425:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15979:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24915:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15789:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22186:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15830:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25827:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21386:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16059:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3574:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16457:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15866:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1078:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15906:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23158:318;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23296:13:::1;23277:16;:32;;;;23333:7;23320:10;:20;;;;23386:10;;23367:16;;:29;;;;:::i;:::-;23351:13;:45;;;;23432:2;23415:13;;:19;;23407:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23158:318:::0;;:::o;2819:100::-;2873:13;2906:5;2899:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:100;:::o;3733:169::-;3816:4;3833:39;3842:12;:10;:12::i;:::-;3856:7;3865:6;3833:8;:39::i;:::-;3890:4;3883:11;;3733:169;;;;:::o;15604:41::-;;;;;;;;;;;;;:::o;3140:108::-;3201:7;3228:12;;3221:19;;3140:108;:::o;16270:33::-;;;;:::o;21891:287::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22035:10:::1;:8;:10::i;:::-;22029:2;:16;;;;:::i;:::-;22020:4;22015:1;21999:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21998:26;;;;:::i;:::-;21997:49;;;;:::i;:::-;21987:6;:59;;21965:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;22159:10;:8;:10::i;:::-;22153:2;:16;;;;:::i;:::-;22143:6;:27;;;;:::i;:::-;22126:14;:44;;;;21891:287:::0;:::o;3910:492::-;4050:4;4067:36;4077:6;4085:9;4096:6;4067:9;:36::i;:::-;4116:24;4143:11;:19;4155:6;4143:19;;;;;;;;;;;;;;;:33;4163:12;:10;:12::i;:::-;4143:33;;;;;;;;;;;;;;;;4116:60;;4215:6;4195:16;:26;;4187:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4302:57;4311:6;4319:12;:10;:12::i;:::-;4352:6;4333:16;:25;4302:8;:57::i;:::-;4390:4;4383:11;;;3910:492;;;;;:::o;3039:93::-;3097:5;3122:2;3115:9;;3039:93;:::o;15687:26::-;;;;;;;;;;;;;:::o;4410:215::-;4498:4;4515:80;4524:12;:10;:12::i;:::-;4538:7;4584:10;4547:11;:25;4559:12;:10;:12::i;:::-;4547:25;;;;;;;;;;;;;;;:34;4573:7;4547:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4515:8;:80::i;:::-;4613:4;4606:11;;4410:215;;;;:::o;23484:1423::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23842:19:::1;:29;;;23838:78;;;23891:19;:25;;;23873:15;;:43;;;;;;;;;;;;;;;;;;23838:78;23931:19;:29;;;23927:78;;;23980:19;:25;;;23962:15;:43;;;;23927:78;24020:20;:30;;;24016:81;;;24071:20;:26;;;24052:16;:45;;;;24016:81;24112:21;:31;;;24108:84;;;24165:21;:27;;;24145:17;;:47;;;;;;;;;;;;;;;;;;24108:84;24207:13;:23;;;24203:60;;;24244:13;:19;;;24232:9;:31;;;;24203:60;24278:14;:24;;;24274:63;;;24317:14;:20;;;24304:10;:33;;;;24274:63;24383:9;;24365:15;;:27;;;;:::i;:::-;24350:12;:42;;;;24438:10;;24419:16;;:29;;;;:::i;:::-;24403:13;:45;;;;24485:2;24469:12;;:18;;24461:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24557:2;24540:13;;:19;;24532:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24637:1;24610:29;;:15;;;;;;;;;;;:29;;::::0;24606:152:::1;;24681:1;24662:15;;:20;:45;;;;;24706:1;24686:16;;:21;24662:45;24654:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;24606:152;24802:1;24773:31;;:17;;;;;;;;;;;:31;;::::0;24769:130:::1;;24840:1;24827:9;;:14;:33;;;;;24859:1;24845:10;;:15;24827:33;24819:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;24769:130;23484:1423:::0;;;;;;:::o;15652:28::-;;;;;;;;;;;;;:::o;15939:33::-;;;;;;;;;;;;;:::o;26024:126::-;26090:4;26114:19;:28;26134:7;26114:28;;;;;;;;;;;;;;;;;;;;;;;;;26107:35;;26024:126;;;:::o;22839:311::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22975:13:::1;22957:15;:31;;;;23011:7;22999:9;:19;;;;23062:9;;23044:15;;:27;;;;:::i;:::-;23029:12;:42;;;;23106:2;23090:12;;:18;;23082:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22839:311:::0;;:::o;16163:28::-;;;;:::o;16019:31::-;;;;;;;;;;;;;:::o;3256:127::-;3330:7;3357:9;:18;3367:7;3357:18;;;;;;;;;;;;;;;;3350:25;;3256:127;;;:::o;967:103::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1032:30:::1;1059:1;1032:18;:30::i;:::-;967:103::o:0;21195:121::-;21247:4;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21281:5:::1;21264:14;;:22;;;;;;;;;;;;;;;;;;21304:4;21297:11;;21195:121:::0;:::o;22474:161::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22623:4:::1;22587:25;:33;22613:6;22587:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;22474:161:::0;;:::o;15752:30::-;;;;;;;;;;;;;:::o;16093:::-;;;;:::o;19615:112::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19686:4:::1;19670:13;;:20;;;;;;;;;;;;;;;;;;19715:4;19701:11;;:18;;;;;;;;;;;;;;;;;;19615:112::o:0;744:87::-;790:7;817:6;;;;;;;;;;;810:13;;744:87;:::o;20936:207::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21035:9:::1;21030:106;21054:7;;:14;;21050:1;:18;21030:106;;;21117:7;21090:12;:24;21103:7;;21111:1;21103:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21090:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;21070:3;;;;;;;21030:106;;;;20936:207:::0;;;:::o;16198:31::-;;;;:::o;22731:100::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22816:7:::1;22802:11;;:21;;;;;;;;;;;;;;;;;;22731:100:::0;:::o;2927:104::-;2983:13;3016:7;3009:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2927:104;:::o;25105:304::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25249:13:::1;;;;;;;;;;;25241:21;;:4;:21;;::::0;25219:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25360:41;25389:4;25395:5;25360:28;:41::i;:::-;25105:304:::0;;:::o;16130:24::-;;;;:::o;16310:27::-;;;;:::o;16236:25::-;;;;:::o;4633:413::-;4726:4;4743:24;4770:11;:25;4782:12;:10;:12::i;:::-;4770:25;;;;;;;;;;;;;;;:34;4796:7;4770:34;;;;;;;;;;;;;;;;4743:61;;4843:15;4823:16;:35;;4815:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4936:67;4945:12;:10;:12::i;:::-;4959:7;4987:15;4968:16;:34;4936:8;:67::i;:::-;5034:4;5027:11;;;4633:413;;;;:::o;3391:175::-;3477:4;3494:42;3504:12;:10;:12::i;:::-;3518:9;3529:6;3494:9;:42::i;:::-;3554:4;3547:11;;3391:175;;;;:::o;19735:1062::-;19819:18;19893:95;20017:22;;;;;;;;;;;;;;;;;20007:33;;;;;;20069:10;;;;;;;;;;;;;;;;;20059:21;;;;;;20099:13;20139:4;19864:295;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19840:330;;;;;;19819:351;;20183:18;20257:49;20335:23;;;;;;;;;;;;;;;;;20325:34;;;;;;20386:1;20228:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20204:210;;;;;;20183:231;;20427:14;20532:10;20561;20468:134;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20444:169;;;;;;20427:186;;20626:14;20643:26;20653:6;20661:1;20664;20667;20643:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20626:43;;20698:7;:5;:7::i;:::-;20688:17;;:6;:17;;;20680:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;20756:4;20740:13;;:20;;;;;;;;;;;;;;;;;;20785:4;20771:11;;:18;;;;;;;;;;;;;;;;;;19808:989;;;;19735:1062;;;:::o;25611:208::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25748:15:::1;;;;;;;;;;;25705:59;;25728:18;25705:59;;;;;;;;;;;;25793:18;25775:15;;:36;;;;;;;;;;;;;;;;;;25611:208:::0;:::o;16523:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19425:182::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19533:3:::1;19509:28;;:12;:28;;::::0;19501:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19587:12;19573:11;;:26;;;;;;;;;;;;;;;;;;19425:182:::0;:::o;15979:33::-;;;;;;;;;;;;;:::o;24915:182::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25031:8:::1;25000:19;:28;25020:7;25000:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25071:7;25055:34;;;25080:8;25055:34;;;;;;:::i;:::-;;;;;;;;24915:182:::0;;:::o;15789:32::-;;;;;;;;;;;;;:::o;22186:280::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22333:10:::1;:8;:10::i;:::-;22327:2;:16;;;;:::i;:::-;22318:4;22313:1;22297:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22296:26;;;;:::i;:::-;22295:49;;;;:::i;:::-;22285:6;:59;;22263:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;22447:10;:8;:10::i;:::-;22441:2;:16;;;;:::i;:::-;22431:6;:27;;;;:::i;:::-;22419:9;:39;;;;22186:280:::0;:::o;15830:29::-;;;;:::o;25827:189::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25950:17:::1;;;;;;;;;;;25914:54;;25939:9;25914:54;;;;;;;;;;;;25999:9;25979:17;;:29;;;;;;;;;;;;;;;;;;25827:189:::0;:::o;21386:497::-;21494:4;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21573:6:::1;21568:1;21552:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21551:28;;;;:::i;:::-;21538:9;:41;;21516:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21728:4;21723:1;21707:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21706:26;;;;:::i;:::-;21693:9;:39;;21671:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21844:9;21823:18;:30;;;;21871:4;21864:11;;21386:497:::0;;;:::o;16059:27::-;;;;:::o;3574:151::-;3663:7;3690:11;:18;3702:5;3690:18;;;;;;;;;;;;;;;:27;3709:7;3690:27;;;;;;;;;;;;;;;;3683:34;;3574:151;;;;:::o;16457:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15866:33::-;;;;:::o;1078:201::-;890:12;:10;:12::i;:::-;879:23;;:7;:5;:7::i;:::-;:23;;;871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1187:1:::1;1167:22;;:8;:22;;::::0;1159:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1243:28;1262:8;1243:18;:28::i;:::-;1078:201:::0;:::o;15906:24::-;;;;:::o;290:98::-;343:7;370:10;363:17;;290:98;:::o;6801:380::-;6954:1;6937:19;;:5;:19;;;6929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7035:1;7016:21;;:7;:21;;;7008:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7119:6;7089:11;:18;7101:5;7089:18;;;;;;;;;;;;;;;:27;7108:7;7089:27;;;;;;;;;;;;;;;:36;;;;7157:7;7141:32;;7150:5;7141:32;;;7166:6;7141:32;;;;;;:::i;:::-;;;;;;;;6801:380;;;:::o;26158:3603::-;26306:1;26290:18;;:4;:18;;;26282:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26383:1;26369:16;;:2;:16;;;26361:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26445:12;:18;26458:4;26445:18;;;;;;;;;;;;;;;;;;;;;;;;;26444:19;26436:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26505:12;:16;26518:2;26505:16;;;;;;;;;;;;;;;;;;;;;;;;;26504:17;26496:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;26568:1;26558:6;:11;26554:93;;26586:28;26602:4;26608:2;26612:1;26586:15;:28::i;:::-;26629:7;;26554:93;26663:14;;;;;;;;;;;26659:1150;;;26706:7;:5;:7::i;:::-;26698:15;;:4;:15;;;;:49;;;;;26740:7;:5;:7::i;:::-;26734:13;;:2;:13;;;;26698:49;:86;;;;;26782:1;26768:16;;:2;:16;;;;26698:86;:128;;;;;26819:6;26805:21;;:2;:21;;;;26698:128;:158;;;;;26848:8;;;;;;;;;;;26847:9;26698:158;26694:1104;;;26882:13;;;;;;;;;;;26877:150;;26928:19;:25;26948:4;26928:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26957:19;:23;26977:2;26957:23;;;;;;;;;;;;;;;;;;;;;;;;;26928:52;26920:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26877:150;27079:25;:31;27105:4;27079:31;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;27115:25;:29;27141:2;27115:29;;;;;;;;;;;;;;;;;;;;;;;;;27114:30;27079:65;27075:708;;;27187:14;;27177:6;:24;;27169:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;27310:9;;27293:13;27303:2;27293:9;:13::i;:::-;27284:6;:22;;;;:::i;:::-;:35;;27276:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27075:708;;;27419:25;:29;27445:2;27419:29;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;27453:25;:31;27479:4;27453:31;;;;;;;;;;;;;;;;;;;;;;;;;27452:32;27419:65;27415:368;;;27527:14;;27517:6;:24;;27509:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;27415:368;;;27642:25;:29;27668:2;27642:29;;;;;;;;;;;;;;;;;;;;;;;;;27637:146;;27730:9;;27713:13;27723:2;27713:9;:13::i;:::-;27704:6;:22;;;;:::i;:::-;:35;;27696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27637:146;27415:368;27075:708;26694:1104;26659:1150;27848:1;27825:25;;:11;;;;;;;;;;;:25;;;;:79;;;;;27867:11;;;;;;;;;;;27854:35;;;27898:4;27854:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27825:79;27821:290;;;27921:10;27947:11;;;;;;;;;;;27934:31;;;27966:4;27972:2;27984:13;;;;;;;;;;;28000:9;;28011:14;;28027:18;;27934:112;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27921:125;;28069:5;28061:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;27906:205;27821:290;28123:28;28154:24;28172:4;28154:9;:24::i;:::-;28123:55;;28189:12;28228:18;;28204:20;:42;;28189:57;;28261:7;:35;;;;;28285:11;;;;;;;;;;;28261:35;:61;;;;;28314:8;;;;;;;;;;;28313:9;28261:61;:107;;;;;28339:25;:29;28365:2;28339:29;;;;;;;;;;;;;;;;;;;;;;;;;28261:107;:150;;;;;28386:19;:25;28406:4;28386:25;;;;;;;;;;;;;;;;;;;;;;;;;28385:26;28261:150;:191;;;;;28429:19;:23;28449:2;28429:23;;;;;;;;;;;;;;;;;;;;;;;;;28428:24;28261:191;28257:297;;;28482:4;28471:8;;:15;;;;;;;;;;;;;;;;;;28501:10;:8;:10::i;:::-;28537:5;28526:8;;:16;;;;;;;;;;;;;;;;;;28257:297;28566:12;28582:8;;;;;;;;;;;28581:9;28566:24;;28692:19;:25;28712:4;28692:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28721:19;:23;28741:2;28721:23;;;;;;;;;;;;;;;;;;;;;;;;;28692:52;28688:100;;;28771:5;28761:15;;28688:100;28800:12;28905:7;28901:807;;;28957:25;:29;28983:2;28957:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29006:1;28990:13;;:17;28957:50;28953:606;;;29035:34;29065:3;29035:25;29046:13;;29035:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29028:41;;29126:13;;29112:10;;29105:4;:17;;;;:::i;:::-;29104:35;;;;:::i;:::-;29088:12;;:51;;;;;;;:::i;:::-;;;;;;;;29208:13;;29188:16;;29181:4;:23;;;;:::i;:::-;29180:41;;;;:::i;:::-;29158:18;;:63;;;;;;;:::i;:::-;;;;;;;;28953:606;;;29283:25;:31;29309:4;29283:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29333:1;29318:12;;:16;29283:51;29279:280;;;29362:33;29391:3;29362:24;29373:12;;29362:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29355:40;;29451:12;;29438:9;;29431:4;:16;;;;:::i;:::-;29430:33;;;;:::i;:::-;29414:12;;:49;;;;;;;:::i;:::-;;;;;;;;29531:12;;29512:15;;29505:4;:22;;;;:::i;:::-;29504:39;;;;:::i;:::-;29482:18;;:61;;;;;;;:::i;:::-;;;;;;;;29279:280;28953:606;29586:1;29579:4;:8;29575:91;;;29608:42;29624:4;29638;29645;29608:15;:42::i;:::-;29575:91;29692:4;29682:14;;;;;:::i;:::-;;;28901:807;29720:33;29736:4;29742:2;29746:6;29720:15;:33::i;:::-;26271:3490;;;;26158:3603;;;;:::o;1287:191::-;1361:16;1380:6;;;;;;;;;;;1361:25;;1406:8;1397:6;;:17;;;;;;;;;;;;;;;;;;1461:8;1430:40;;1451:8;1430:40;;;;;;;;;;;;1350:128;1287:191;:::o;25417:186::-;25534:5;25500:25;:31;25526:4;25500:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25589:5;25555:40;;25583:4;25555:40;;;;;;;;;;;;25417:186;;:::o;5054:733::-;5212:1;5194:20;;:6;:20;;;5186:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5296:1;5275:23;;:9;:23;;;5267:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5351:47;5372:6;5380:9;5391:6;5351:20;:47::i;:::-;5411:21;5435:9;:17;5445:6;5435:17;;;;;;;;;;;;;;;;5411:41;;5488:6;5471:13;:23;;5463:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5609:6;5593:13;:22;5573:9;:17;5583:6;5573:17;;;;;;;;;;;;;;;:42;;;;5661:6;5637:9;:20;5647:9;5637:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5702:9;5685:35;;5694:6;5685:35;;;5713:6;5685:35;;;;;;:::i;:::-;;;;;;;;5733:46;5753:6;5761:9;5772:6;5733:19;:46::i;:::-;5175:612;5054:733;;;:::o;30481:914::-;30520:23;30546:24;30564:4;30546:9;:24::i;:::-;30520:50;;30581:25;30630:12;;30609:18;;:33;;;;:::i;:::-;30581:61;;30653:12;30701:1;30682:15;:20;:46;;;;30727:1;30706:17;:22;30682:46;30678:85;;;30745:7;;;;;30678:85;30818:2;30797:18;;:23;;;;:::i;:::-;30779:15;:41;30775:115;;;30876:2;30855:18;;:23;;;;:::i;:::-;30837:41;;30775:115;30902:25;30930:21;30902:49;;30962:33;30979:15;30962:16;:33::i;:::-;31008:18;31029:44;31055:17;31029:21;:25;;:44;;;;:::i;:::-;31008:65;;31084:17;31104:51;31137:17;31104:28;31119:12;;31104:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;31084:71;;31189:1;31168:18;:22;;;;31216:1;31201:12;:16;;;;31252:17;;;;;;;;;;;31244:31;;31283:9;31244:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31230:67;;;;;31330:15;;;;;;;;;;;31322:29;;31360:21;31322:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31308:79;;;;;30509:886;;;;;;30481:914;:::o;8805:98::-;8863:7;8894:1;8890;:5;;;;:::i;:::-;8883:12;;8805:98;;;;:::o;8911:::-;8969:7;9000:1;8996;:5;;;;:::i;:::-;8989:12;;8911:98;;;;:::o;7189:125::-;;;;:::o;7322:124::-;;;;:::o;29884:589::-;30010:21;30048:1;30034:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30010:40;;30079:4;30061;30066:1;30061:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30105:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30095:4;30100:1;30095:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30140:62;30157:4;30172:15;;;;;;;;;;;30190:11;30140:8;:62::i;:::-;30241:15;;;;;;;;;;;:66;;;30322:11;30348:1;30392:4;30419;30439:15;30241:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29939:534;29884:589;:::o;8699:98::-;8757:7;8788:1;8784;:5;;;;:::i;:::-;8777:12;;8699:98;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:139::-;1539:6;1534:3;1529;1523:23;1580:1;1571:6;1566:3;1562:16;1555:27;1450:139;;;:::o;1595:102::-;1636:6;1687:2;1683:7;1678:2;1671:5;1667:14;1663:28;1653:38;;1595:102;;;:::o;1703:377::-;1791:3;1819:39;1852:5;1819:39;:::i;:::-;1874:71;1938:6;1933:3;1874:71;:::i;:::-;1867:78;;1954:65;2012:6;2007:3;2000:4;1993:5;1989:16;1954:65;:::i;:::-;2044:29;2066:6;2044:29;:::i;:::-;2039:3;2035:39;2028:46;;1795:285;1703:377;;;;:::o;2086:313::-;2199:4;2237:2;2226:9;2222:18;2214:26;;2286:9;2280:4;2276:20;2272:1;2261:9;2257:17;2250:47;2314:78;2387:4;2378:6;2314:78;:::i;:::-;2306:86;;2086:313;;;;:::o;2405:126::-;2442:7;2482:42;2475:5;2471:54;2460:65;;2405:126;;;:::o;2537:96::-;2574:7;2603:24;2621:5;2603:24;:::i;:::-;2592:35;;2537:96;;;:::o;2639:122::-;2712:24;2730:5;2712:24;:::i;:::-;2705:5;2702:35;2692:63;;2751:1;2748;2741:12;2692:63;2639:122;:::o;2767:139::-;2813:5;2851:6;2838:20;2829:29;;2867:33;2894:5;2867:33;:::i;:::-;2767:139;;;;:::o;2912:474::-;2980:6;2988;3037:2;3025:9;3016:7;3012:23;3008:32;3005:119;;;3043:79;;:::i;:::-;3005:119;3163:1;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3134:117;3290:2;3316:53;3361:7;3352:6;3341:9;3337:22;3316:53;:::i;:::-;3306:63;;3261:118;2912:474;;;;;:::o;3392:90::-;3426:7;3469:5;3462:13;3455:21;3444:32;;3392:90;;;:::o;3488:109::-;3569:21;3584:5;3569:21;:::i;:::-;3564:3;3557:34;3488:109;;:::o;3603:210::-;3690:4;3728:2;3717:9;3713:18;3705:26;;3741:65;3803:1;3792:9;3788:17;3779:6;3741:65;:::i;:::-;3603:210;;;;:::o;3819:60::-;3847:3;3868:5;3861:12;;3819:60;;;:::o;3885:142::-;3935:9;3968:53;3986:34;3995:24;4013:5;3995:24;:::i;:::-;3986:34;:::i;:::-;3968:53;:::i;:::-;3955:66;;3885:142;;;:::o;4033:126::-;4083:9;4116:37;4147:5;4116:37;:::i;:::-;4103:50;;4033:126;;;:::o;4165:153::-;4242:9;4275:37;4306:5;4275:37;:::i;:::-;4262:50;;4165:153;;;:::o;4324:185::-;4438:64;4496:5;4438:64;:::i;:::-;4433:3;4426:77;4324:185;;:::o;4515:276::-;4635:4;4673:2;4662:9;4658:18;4650:26;;4686:98;4781:1;4770:9;4766:17;4757:6;4686:98;:::i;:::-;4515:276;;;;:::o;4797:118::-;4884:24;4902:5;4884:24;:::i;:::-;4879:3;4872:37;4797:118;;:::o;4921:222::-;5014:4;5052:2;5041:9;5037:18;5029:26;;5065:71;5133:1;5122:9;5118:17;5109:6;5065:71;:::i;:::-;4921:222;;;;:::o;5149:329::-;5208:6;5257:2;5245:9;5236:7;5232:23;5228:32;5225:119;;;5263:79;;:::i;:::-;5225:119;5383:1;5408:53;5453:7;5444:6;5433:9;5429:22;5408:53;:::i;:::-;5398:63;;5354:117;5149:329;;;;:::o;5484:619::-;5561:6;5569;5577;5626:2;5614:9;5605:7;5601:23;5597:32;5594:119;;;5632:79;;:::i;:::-;5594:119;5752:1;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5723:117;5879:2;5905:53;5950:7;5941:6;5930:9;5926:22;5905:53;:::i;:::-;5895:63;;5850:118;6007:2;6033:53;6078:7;6069:6;6058:9;6054:22;6033:53;:::i;:::-;6023:63;;5978:118;5484:619;;;;;:::o;6109:86::-;6144:7;6184:4;6177:5;6173:16;6162:27;;6109:86;;;:::o;6201:112::-;6284:22;6300:5;6284:22;:::i;:::-;6279:3;6272:35;6201:112;;:::o;6319:214::-;6408:4;6446:2;6435:9;6431:18;6423:26;;6459:67;6523:1;6512:9;6508:17;6499:6;6459:67;:::i;:::-;6319:214;;;;:::o;6539:118::-;6626:24;6644:5;6626:24;:::i;:::-;6621:3;6614:37;6539:118;;:::o;6663:222::-;6756:4;6794:2;6783:9;6779:18;6771:26;;6807:71;6875:1;6864:9;6860:17;6851:6;6807:71;:::i;:::-;6663:222;;;;:::o;6891:117::-;7000:1;6997;6990:12;7014:180;7062:77;7059:1;7052:88;7159:4;7156:1;7149:15;7183:4;7180:1;7173:15;7200:281;7283:27;7305:4;7283:27;:::i;:::-;7275:6;7271:40;7413:6;7401:10;7398:22;7377:18;7365:10;7362:34;7359:62;7356:88;;;7424:18;;:::i;:::-;7356:88;7464:10;7460:2;7453:22;7243:238;7200:281;;:::o;7487:129::-;7521:6;7548:20;;:::i;:::-;7538:30;;7577:33;7605:4;7597:6;7577:33;:::i;:::-;7487:129;;;:::o;7745:116::-;7815:21;7830:5;7815:21;:::i;:::-;7808:5;7805:32;7795:60;;7851:1;7848;7841:12;7795:60;7745:116;:::o;7867:133::-;7910:5;7948:6;7935:20;7926:29;;7964:30;7988:5;7964:30;:::i;:::-;7867:133;;;;:::o;8037:586::-;8120:5;8164:4;8152:9;8147:3;8143:19;8139:30;8136:117;;;8172:79;;:::i;:::-;8136:117;8271:21;8287:4;8271:21;:::i;:::-;8262:30;;8356:1;8396:46;8438:3;8429:6;8418:9;8414:22;8396:46;:::i;:::-;8389:4;8382:5;8378:16;8371:72;8302:152;8514:2;8555:49;8600:3;8591:6;8580:9;8576:22;8555:49;:::i;:::-;8548:4;8541:5;8537:16;8530:75;8464:152;8037:586;;;;:::o;8653:579::-;8729:5;8773:4;8761:9;8756:3;8752:19;8748:30;8745:117;;;8781:79;;:::i;:::-;8745:117;8880:21;8896:4;8880:21;:::i;:::-;8871:30;;8965:1;9005:46;9047:3;9038:6;9027:9;9023:22;9005:46;:::i;:::-;8998:4;8991:5;8987:16;8980:72;8911:152;9123:2;9164:49;9209:3;9200:6;9189:9;9185:22;9164:49;:::i;:::-;9157:4;9150:5;9146:16;9139:75;9073:152;8653:579;;;;:::o;9238:1411::-;9518:6;9526;9534;9542;9550;9558;9607:3;9595:9;9586:7;9582:23;9578:33;9575:120;;;9614:79;;:::i;:::-;9575:120;9734:1;9759:87;9838:7;9829:6;9818:9;9814:22;9759:87;:::i;:::-;9749:97;;9705:151;9895:2;9921:80;9993:7;9984:6;9973:9;9969:22;9921:80;:::i;:::-;9911:90;;9866:145;10050:3;10077:80;10149:7;10140:6;10129:9;10125:22;10077:80;:::i;:::-;10067:90;;10021:146;10206:3;10233:87;10312:7;10303:6;10292:9;10288:22;10233:87;:::i;:::-;10223:97;;10177:153;10369:3;10396:80;10468:7;10459:6;10448:9;10444:22;10396:80;:::i;:::-;10386:90;;10340:146;10525:3;10552:80;10624:7;10615:6;10604:9;10600:22;10552:80;:::i;:::-;10542:90;;10496:146;9238:1411;;;;;;;;:::o;10655:329::-;10714:6;10763:2;10751:9;10742:7;10738:23;10734:32;10731:119;;;10769:79;;:::i;:::-;10731:119;10889:1;10914:53;10959:7;10950:6;10939:9;10935:22;10914:53;:::i;:::-;10904:63;;10860:117;10655:329;;;;:::o;10990:468::-;11055:6;11063;11112:2;11100:9;11091:7;11087:23;11083:32;11080:119;;;11118:79;;:::i;:::-;11080:119;11238:1;11263:53;11308:7;11299:6;11288:9;11284:22;11263:53;:::i;:::-;11253:63;;11209:117;11365:2;11391:50;11433:7;11424:6;11413:9;11409:22;11391:50;:::i;:::-;11381:60;;11336:115;10990:468;;;;;:::o;11464:117::-;11573:1;11570;11563:12;11587:117;11696:1;11693;11686:12;11710:117;11819:1;11816;11809:12;11850:568;11923:8;11933:6;11983:3;11976:4;11968:6;11964:17;11960:27;11950:122;;11991:79;;:::i;:::-;11950:122;12104:6;12091:20;12081:30;;12134:18;12126:6;12123:30;12120:117;;;12156:79;;:::i;:::-;12120:117;12270:4;12262:6;12258:17;12246:29;;12324:3;12316:4;12308:6;12304:17;12294:8;12290:32;12287:41;12284:128;;;12331:79;;:::i;:::-;12284:128;11850:568;;;;;:::o;12424:698::-;12516:6;12524;12532;12581:2;12569:9;12560:7;12556:23;12552:32;12549:119;;;12587:79;;:::i;:::-;12549:119;12735:1;12724:9;12720:17;12707:31;12765:18;12757:6;12754:30;12751:117;;;12787:79;;:::i;:::-;12751:117;12900:80;12972:7;12963:6;12952:9;12948:22;12900:80;:::i;:::-;12882:98;;;;12678:312;13029:2;13055:50;13097:7;13088:6;13077:9;13073:22;13055:50;:::i;:::-;13045:60;;13000:115;12424:698;;;;;:::o;13128:323::-;13184:6;13233:2;13221:9;13212:7;13208:23;13204:32;13201:119;;;13239:79;;:::i;:::-;13201:119;13359:1;13384:50;13426:7;13417:6;13406:9;13402:22;13384:50;:::i;:::-;13374:60;;13330:114;13128:323;;;;:::o;13457:118::-;13528:22;13544:5;13528:22;:::i;:::-;13521:5;13518:33;13508:61;;13565:1;13562;13555:12;13508:61;13457:118;:::o;13581:135::-;13625:5;13663:6;13650:20;13641:29;;13679:31;13704:5;13679:31;:::i;:::-;13581:135;;;;:::o;13722:77::-;13759:7;13788:5;13777:16;;13722:77;;;:::o;13805:122::-;13878:24;13896:5;13878:24;:::i;:::-;13871:5;13868:35;13858:63;;13917:1;13914;13907:12;13858:63;13805:122;:::o;13933:139::-;13979:5;14017:6;14004:20;13995:29;;14033:33;14060:5;14033:33;:::i;:::-;13933:139;;;;:::o;14078:615::-;14153:6;14161;14169;14218:2;14206:9;14197:7;14193:23;14189:32;14186:119;;;14224:79;;:::i;:::-;14186:119;14344:1;14369:51;14412:7;14403:6;14392:9;14388:22;14369:51;:::i;:::-;14359:61;;14315:115;14469:2;14495:53;14540:7;14531:6;14520:9;14516:22;14495:53;:::i;:::-;14485:63;;14440:118;14597:2;14623:53;14668:7;14659:6;14648:9;14644:22;14623:53;:::i;:::-;14613:63;;14568:118;14078:615;;;;;:::o;14699:474::-;14767:6;14775;14824:2;14812:9;14803:7;14799:23;14795:32;14792:119;;;14830:79;;:::i;:::-;14792:119;14950:1;14975:53;15020:7;15011:6;15000:9;14996:22;14975:53;:::i;:::-;14965:63;;14921:117;15077:2;15103:53;15148:7;15139:6;15128:9;15124:22;15103:53;:::i;:::-;15093:63;;15048:118;14699:474;;;;;:::o;15179:182::-;15319:34;15315:1;15307:6;15303:14;15296:58;15179:182;:::o;15367:366::-;15509:3;15530:67;15594:2;15589:3;15530:67;:::i;:::-;15523:74;;15606:93;15695:3;15606:93;:::i;:::-;15724:2;15719:3;15715:12;15708:19;;15367:366;;;:::o;15739:419::-;15905:4;15943:2;15932:9;15928:18;15920:26;;15992:9;15986:4;15982:20;15978:1;15967:9;15963:17;15956:47;16020:131;16146:4;16020:131;:::i;:::-;16012:139;;15739:419;;;:::o;16164:180::-;16212:77;16209:1;16202:88;16309:4;16306:1;16299:15;16333:4;16330:1;16323:15;16350:191;16390:3;16409:20;16427:1;16409:20;:::i;:::-;16404:25;;16443:20;16461:1;16443:20;:::i;:::-;16438:25;;16486:1;16483;16479:9;16472:16;;16507:3;16504:1;16501:10;16498:36;;;16514:18;;:::i;:::-;16498:36;16350:191;;;;:::o;16547:179::-;16687:31;16683:1;16675:6;16671:14;16664:55;16547:179;:::o;16732:366::-;16874:3;16895:67;16959:2;16954:3;16895:67;:::i;:::-;16888:74;;16971:93;17060:3;16971:93;:::i;:::-;17089:2;17084:3;17080:12;17073:19;;16732:366;;;:::o;17104:419::-;17270:4;17308:2;17297:9;17293:18;17285:26;;17357:9;17351:4;17347:20;17343:1;17332:9;17328:17;17321:47;17385:131;17511:4;17385:131;:::i;:::-;17377:139;;17104:419;;;:::o;17529:180::-;17577:77;17574:1;17567:88;17674:4;17671:1;17664:15;17698:4;17695:1;17688:15;17715:320;17759:6;17796:1;17790:4;17786:12;17776:22;;17843:1;17837:4;17833:12;17864:18;17854:81;;17920:4;17912:6;17908:17;17898:27;;17854:81;17982:2;17974:6;17971:14;17951:18;17948:38;17945:84;;18001:18;;:::i;:::-;17945:84;17766:269;17715:320;;;:::o;18041:102::-;18083:8;18130:5;18127:1;18123:13;18102:34;;18041:102;;;:::o;18149:848::-;18210:5;18217:4;18241:6;18232:15;;18265:5;18256:14;;18279:712;18300:1;18290:8;18287:15;18279:712;;;18395:4;18390:3;18386:14;18380:4;18377:24;18374:50;;;18404:18;;:::i;:::-;18374:50;18454:1;18444:8;18440:16;18437:451;;;18869:4;18862:5;18858:16;18849:25;;18437:451;18919:4;18913;18909:15;18901:23;;18949:32;18972:8;18949:32;:::i;:::-;18937:44;;18279:712;;;18149:848;;;;;;;:::o;19003:1073::-;19057:5;19248:8;19238:40;;19269:1;19260:10;;19271:5;;19238:40;19297:4;19287:36;;19314:1;19305:10;;19316:5;;19287:36;19383:4;19431:1;19426:27;;;;19467:1;19462:191;;;;19376:277;;19426:27;19444:1;19435:10;;19446:5;;;19462:191;19507:3;19497:8;19494:17;19491:43;;;19514:18;;:::i;:::-;19491:43;19563:8;19560:1;19556:16;19547:25;;19598:3;19591:5;19588:14;19585:40;;;19605:18;;:::i;:::-;19585:40;19638:5;;;19376:277;;19762:2;19752:8;19749:16;19743:3;19737:4;19734:13;19730:36;19712:2;19702:8;19699:16;19694:2;19688:4;19685:12;19681:35;19665:111;19662:246;;;19818:8;19812:4;19808:19;19799:28;;19853:3;19846:5;19843:14;19840:40;;;19860:18;;:::i;:::-;19840:40;19893:5;;19662:246;19933:42;19971:3;19961:8;19955:4;19952:1;19933:42;:::i;:::-;19918:57;;;;20007:4;20002:3;19998:14;19991:5;19988:25;19985:51;;;20016:18;;:::i;:::-;19985:51;20065:4;20058:5;20054:16;20045:25;;19003:1073;;;;;;:::o;20082:281::-;20140:5;20164:23;20182:4;20164:23;:::i;:::-;20156:31;;20208:25;20224:8;20208:25;:::i;:::-;20196:37;;20252:104;20289:66;20279:8;20273:4;20252:104;:::i;:::-;20243:113;;20082:281;;;;:::o;20369:410::-;20409:7;20432:20;20450:1;20432:20;:::i;:::-;20427:25;;20466:20;20484:1;20466:20;:::i;:::-;20461:25;;20521:1;20518;20514:9;20543:30;20561:11;20543:30;:::i;:::-;20532:41;;20722:1;20713:7;20709:15;20706:1;20703:22;20683:1;20676:9;20656:83;20633:139;;20752:18;;:::i;:::-;20633:139;20417:362;20369:410;;;;:::o;20785:180::-;20833:77;20830:1;20823:88;20930:4;20927:1;20920:15;20954:4;20951:1;20944:15;20971:185;21011:1;21028:20;21046:1;21028:20;:::i;:::-;21023:25;;21062:20;21080:1;21062:20;:::i;:::-;21057:25;;21101:1;21091:35;;21106:18;;:::i;:::-;21091:35;21148:1;21145;21141:9;21136:14;;20971:185;;;;:::o;21162:228::-;21302:34;21298:1;21290:6;21286:14;21279:58;21371:11;21366:2;21358:6;21354:15;21347:36;21162:228;:::o;21396:366::-;21538:3;21559:67;21623:2;21618:3;21559:67;:::i;:::-;21552:74;;21635:93;21724:3;21635:93;:::i;:::-;21753:2;21748:3;21744:12;21737:19;;21396:366;;;:::o;21768:419::-;21934:4;21972:2;21961:9;21957:18;21949:26;;22021:9;22015:4;22011:20;22007:1;21996:9;21992:17;21985:47;22049:131;22175:4;22049:131;:::i;:::-;22041:139;;21768:419;;;:::o;22193:227::-;22333:34;22329:1;22321:6;22317:14;22310:58;22402:10;22397:2;22389:6;22385:15;22378:35;22193:227;:::o;22426:366::-;22568:3;22589:67;22653:2;22648:3;22589:67;:::i;:::-;22582:74;;22665:93;22754:3;22665:93;:::i;:::-;22783:2;22778:3;22774:12;22767:19;;22426:366;;;:::o;22798:419::-;22964:4;23002:2;22991:9;22987:18;22979:26;;23051:9;23045:4;23041:20;23037:1;23026:9;23022:17;23015:47;23079:131;23205:4;23079:131;:::i;:::-;23071:139;;22798:419;;;:::o;23223:233::-;23363:34;23359:1;23351:6;23347:14;23340:58;23432:16;23427:2;23419:6;23415:15;23408:41;23223:233;:::o;23462:366::-;23604:3;23625:67;23689:2;23684:3;23625:67;:::i;:::-;23618:74;;23701:93;23790:3;23701:93;:::i;:::-;23819:2;23814:3;23810:12;23803:19;;23462:366;;;:::o;23834:419::-;24000:4;24038:2;24027:9;24023:18;24015:26;;24087:9;24081:4;24077:20;24073:1;24062:9;24058:17;24051:47;24115:131;24241:4;24115:131;:::i;:::-;24107:139;;23834:419;;;:::o;24259:221::-;24399:34;24395:1;24387:6;24383:14;24376:58;24468:4;24463:2;24455:6;24451:15;24444:29;24259:221;:::o;24486:366::-;24628:3;24649:67;24713:2;24708:3;24649:67;:::i;:::-;24642:74;;24725:93;24814:3;24725:93;:::i;:::-;24843:2;24838:3;24834:12;24827:19;;24486:366;;;:::o;24858:419::-;25024:4;25062:2;25051:9;25047:18;25039:26;;25111:9;25105:4;25101:20;25097:1;25086:9;25082:17;25075:47;25139:131;25265:4;25139:131;:::i;:::-;25131:139;;24858:419;;;:::o;25283:180::-;25331:77;25328:1;25321:88;25428:4;25425:1;25418:15;25452:4;25449:1;25442:15;25469:244;25609:34;25605:1;25597:6;25593:14;25586:58;25678:27;25673:2;25665:6;25661:15;25654:52;25469:244;:::o;25719:366::-;25861:3;25882:67;25946:2;25941:3;25882:67;:::i;:::-;25875:74;;25958:93;26047:3;25958:93;:::i;:::-;26076:2;26071:3;26067:12;26060:19;;25719:366;;;:::o;26091:419::-;26257:4;26295:2;26284:9;26280:18;26272:26;;26344:9;26338:4;26334:20;26330:1;26319:9;26315:17;26308:47;26372:131;26498:4;26372:131;:::i;:::-;26364:139;;26091:419;;;:::o;26516:224::-;26656:34;26652:1;26644:6;26640:14;26633:58;26725:7;26720:2;26712:6;26708:15;26701:32;26516:224;:::o;26746:366::-;26888:3;26909:67;26973:2;26968:3;26909:67;:::i;:::-;26902:74;;26985:93;27074:3;26985:93;:::i;:::-;27103:2;27098:3;27094:12;27087:19;;26746:366;;;:::o;27118:419::-;27284:4;27322:2;27311:9;27307:18;27299:26;;27371:9;27365:4;27361:20;27357:1;27346:9;27342:17;27335:47;27399:131;27525:4;27399:131;:::i;:::-;27391:139;;27118:419;;;:::o;27543:118::-;27630:24;27648:5;27630:24;:::i;:::-;27625:3;27618:37;27543:118;;:::o;27667:664::-;27872:4;27910:3;27899:9;27895:19;27887:27;;27924:71;27992:1;27981:9;27977:17;27968:6;27924:71;:::i;:::-;28005:72;28073:2;28062:9;28058:18;28049:6;28005:72;:::i;:::-;28087;28155:2;28144:9;28140:18;28131:6;28087:72;:::i;:::-;28169;28237:2;28226:9;28222:18;28213:6;28169:72;:::i;:::-;28251:73;28319:3;28308:9;28304:19;28295:6;28251:73;:::i;:::-;27667:664;;;;;;;;:::o;28337:442::-;28486:4;28524:2;28513:9;28509:18;28501:26;;28537:71;28605:1;28594:9;28590:17;28581:6;28537:71;:::i;:::-;28618:72;28686:2;28675:9;28671:18;28662:6;28618:72;:::i;:::-;28700;28768:2;28757:9;28753:18;28744:6;28700:72;:::i;:::-;28337:442;;;;;;:::o;28785:148::-;28887:11;28924:3;28909:18;;28785:148;;;;:::o;28939:214::-;29079:66;29075:1;29067:6;29063:14;29056:90;28939:214;:::o;29159:400::-;29319:3;29340:84;29422:1;29417:3;29340:84;:::i;:::-;29333:91;;29433:93;29522:3;29433:93;:::i;:::-;29551:1;29546:3;29542:11;29535:18;;29159:400;;;:::o;29565:79::-;29604:7;29633:5;29622:16;;29565:79;;;:::o;29650:157::-;29755:45;29775:24;29793:5;29775:24;:::i;:::-;29755:45;:::i;:::-;29750:3;29743:58;29650:157;;:::o;29813:663::-;30054:3;30076:148;30220:3;30076:148;:::i;:::-;30069:155;;30234:75;30305:3;30296:6;30234:75;:::i;:::-;30334:2;30329:3;30325:12;30318:19;;30347:75;30418:3;30409:6;30347:75;:::i;:::-;30447:2;30442:3;30438:12;30431:19;;30467:3;30460:10;;29813:663;;;;;:::o;30482:545::-;30655:4;30693:3;30682:9;30678:19;30670:27;;30707:71;30775:1;30764:9;30760:17;30751:6;30707:71;:::i;:::-;30788:68;30852:2;30841:9;30837:18;30828:6;30788:68;:::i;:::-;30866:72;30934:2;30923:9;30919:18;30910:6;30866:72;:::i;:::-;30948;31016:2;31005:9;31001:18;30992:6;30948:72;:::i;:::-;30482:545;;;;;;;:::o;31033:167::-;31173:19;31169:1;31161:6;31157:14;31150:43;31033:167;:::o;31206:366::-;31348:3;31369:67;31433:2;31428:3;31369:67;:::i;:::-;31362:74;;31445:93;31534:3;31445:93;:::i;:::-;31563:2;31558:3;31554:12;31547:19;;31206:366;;;:::o;31578:419::-;31744:4;31782:2;31771:9;31767:18;31759:26;;31831:9;31825:4;31821:20;31817:1;31806:9;31802:17;31795:47;31859:131;31985:4;31859:131;:::i;:::-;31851:139;;31578:419;;;:::o;32003:170::-;32143:22;32139:1;32131:6;32127:14;32120:46;32003:170;:::o;32179:366::-;32321:3;32342:67;32406:2;32401:3;32342:67;:::i;:::-;32335:74;;32418:93;32507:3;32418:93;:::i;:::-;32536:2;32531:3;32527:12;32520:19;;32179:366;;;:::o;32551:419::-;32717:4;32755:2;32744:9;32740:18;32732:26;;32804:9;32798:4;32794:20;32790:1;32779:9;32775:17;32768:47;32832:131;32958:4;32832:131;:::i;:::-;32824:139;;32551:419;;;:::o;32976:223::-;33116:34;33112:1;33104:6;33100:14;33093:58;33185:6;33180:2;33172:6;33168:15;33161:31;32976:223;:::o;33205:366::-;33347:3;33368:67;33432:2;33427:3;33368:67;:::i;:::-;33361:74;;33444:93;33533:3;33444:93;:::i;:::-;33562:2;33557:3;33553:12;33546:19;;33205:366;;;:::o;33577:419::-;33743:4;33781:2;33770:9;33766:18;33758:26;;33830:9;33824:4;33820:20;33816:1;33805:9;33801:17;33794:47;33858:131;33984:4;33858:131;:::i;:::-;33850:139;;33577:419;;;:::o;34002:240::-;34142:34;34138:1;34130:6;34126:14;34119:58;34211:23;34206:2;34198:6;34194:15;34187:48;34002:240;:::o;34248:366::-;34390:3;34411:67;34475:2;34470:3;34411:67;:::i;:::-;34404:74;;34487:93;34576:3;34487:93;:::i;:::-;34605:2;34600:3;34596:12;34589:19;;34248:366;;;:::o;34620:419::-;34786:4;34824:2;34813:9;34809:18;34801:26;;34873:9;34867:4;34863:20;34859:1;34848:9;34844:17;34837:47;34901:131;35027:4;34901:131;:::i;:::-;34893:139;;34620:419;;;:::o;35045:239::-;35185:34;35181:1;35173:6;35169:14;35162:58;35254:22;35249:2;35241:6;35237:15;35230:47;35045:239;:::o;35290:366::-;35432:3;35453:67;35517:2;35512:3;35453:67;:::i;:::-;35446:74;;35529:93;35618:3;35529:93;:::i;:::-;35647:2;35642:3;35638:12;35631:19;;35290:366;;;:::o;35662:419::-;35828:4;35866:2;35855:9;35851:18;35843:26;;35915:9;35909:4;35905:20;35901:1;35890:9;35886:17;35879:47;35943:131;36069:4;35943:131;:::i;:::-;35935:139;;35662:419;;;:::o;36087:225::-;36227:34;36223:1;36215:6;36211:14;36204:58;36296:8;36291:2;36283:6;36279:15;36272:33;36087:225;:::o;36318:366::-;36460:3;36481:67;36545:2;36540:3;36481:67;:::i;:::-;36474:74;;36557:93;36646:3;36557:93;:::i;:::-;36675:2;36670:3;36666:12;36659:19;;36318:366;;;:::o;36690:419::-;36856:4;36894:2;36883:9;36879:18;36871:26;;36943:9;36937:4;36933:20;36929:1;36918:9;36914:17;36907:47;36971:131;37097:4;36971:131;:::i;:::-;36963:139;;36690:419;;;:::o;37115:223::-;37255:34;37251:1;37243:6;37239:14;37232:58;37324:6;37319:2;37311:6;37307:15;37300:31;37115:223;:::o;37344:366::-;37486:3;37507:67;37571:2;37566:3;37507:67;:::i;:::-;37500:74;;37583:93;37672:3;37583:93;:::i;:::-;37701:2;37696:3;37692:12;37685:19;;37344:366;;;:::o;37716:419::-;37882:4;37920:2;37909:9;37905:18;37897:26;;37969:9;37963:4;37959:20;37955:1;37944:9;37940:17;37933:47;37997:131;38123:4;37997:131;:::i;:::-;37989:139;;37716:419;;;:::o;38141:221::-;38281:34;38277:1;38269:6;38265:14;38258:58;38350:4;38345:2;38337:6;38333:15;38326:29;38141:221;:::o;38368:366::-;38510:3;38531:67;38595:2;38590:3;38531:67;:::i;:::-;38524:74;;38607:93;38696:3;38607:93;:::i;:::-;38725:2;38720:3;38716:12;38709:19;;38368:366;;;:::o;38740:419::-;38906:4;38944:2;38933:9;38929:18;38921:26;;38993:9;38987:4;38983:20;38979:1;38968:9;38964:17;38957:47;39021:131;39147:4;39021:131;:::i;:::-;39013:139;;38740:419;;;:::o;39165:224::-;39305:34;39301:1;39293:6;39289:14;39282:58;39374:7;39369:2;39361:6;39357:15;39350:32;39165:224;:::o;39395:366::-;39537:3;39558:67;39622:2;39617:3;39558:67;:::i;:::-;39551:74;;39634:93;39723:3;39634:93;:::i;:::-;39752:2;39747:3;39743:12;39736:19;;39395:366;;;:::o;39767:419::-;39933:4;39971:2;39960:9;39956:18;39948:26;;40020:9;40014:4;40010:20;40006:1;39995:9;39991:17;39984:47;40048:131;40174:4;40048:131;:::i;:::-;40040:139;;39767:419;;;:::o;40192:222::-;40332:34;40328:1;40320:6;40316:14;40309:58;40401:5;40396:2;40388:6;40384:15;40377:30;40192:222;:::o;40420:366::-;40562:3;40583:67;40647:2;40642:3;40583:67;:::i;:::-;40576:74;;40659:93;40748:3;40659:93;:::i;:::-;40777:2;40772:3;40768:12;40761:19;;40420:366;;;:::o;40792:419::-;40958:4;40996:2;40985:9;40981:18;40973:26;;41045:9;41039:4;41035:20;41031:1;41020:9;41016:17;41009:47;41073:131;41199:4;41073:131;:::i;:::-;41065:139;;40792:419;;;:::o;41217:167::-;41357:19;41353:1;41345:6;41341:14;41334:43;41217:167;:::o;41390:366::-;41532:3;41553:67;41617:2;41612:3;41553:67;:::i;:::-;41546:74;;41629:93;41718:3;41629:93;:::i;:::-;41747:2;41742:3;41738:12;41731:19;;41390:366;;;:::o;41762:419::-;41928:4;41966:2;41955:9;41951:18;41943:26;;42015:9;42009:4;42005:20;42001:1;41990:9;41986:17;41979:47;42043:131;42169:4;42043:131;:::i;:::-;42035:139;;41762:419;;;:::o;42187:165::-;42327:17;42323:1;42315:6;42311:14;42304:41;42187:165;:::o;42358:366::-;42500:3;42521:67;42585:2;42580:3;42521:67;:::i;:::-;42514:74;;42597:93;42686:3;42597:93;:::i;:::-;42715:2;42710:3;42706:12;42699:19;;42358:366;;;:::o;42730:419::-;42896:4;42934:2;42923:9;42919:18;42911:26;;42983:9;42977:4;42973:20;42969:1;42958:9;42954:17;42947:47;43011:131;43137:4;43011:131;:::i;:::-;43003:139;;42730:419;;;:::o;43155:172::-;43295:24;43291:1;43283:6;43279:14;43272:48;43155:172;:::o;43333:366::-;43475:3;43496:67;43560:2;43555:3;43496:67;:::i;:::-;43489:74;;43572:93;43661:3;43572:93;:::i;:::-;43690:2;43685:3;43681:12;43674:19;;43333:366;;;:::o;43705:419::-;43871:4;43909:2;43898:9;43894:18;43886:26;;43958:9;43952:4;43948:20;43944:1;43933:9;43929:17;43922:47;43986:131;44112:4;43986:131;:::i;:::-;43978:139;;43705:419;;;:::o;44130:234::-;44270:34;44266:1;44258:6;44254:14;44247:58;44339:17;44334:2;44326:6;44322:15;44315:42;44130:234;:::o;44370:366::-;44512:3;44533:67;44597:2;44592:3;44533:67;:::i;:::-;44526:74;;44609:93;44698:3;44609:93;:::i;:::-;44727:2;44722:3;44718:12;44711:19;;44370:366;;;:::o;44742:419::-;44908:4;44946:2;44935:9;44931:18;44923:26;;44995:9;44989:4;44985:20;44981:1;44970:9;44966:17;44959:47;45023:131;45149:4;45023:131;:::i;:::-;45015:139;;44742:419;;;:::o;45167:169::-;45307:21;45303:1;45295:6;45291:14;45284:45;45167:169;:::o;45342:366::-;45484:3;45505:67;45569:2;45564:3;45505:67;:::i;:::-;45498:74;;45581:93;45670:3;45581:93;:::i;:::-;45699:2;45694:3;45690:12;45683:19;;45342:366;;;:::o;45714:419::-;45880:4;45918:2;45907:9;45903:18;45895:26;;45967:9;45961:4;45957:20;45953:1;45942:9;45938:17;45931:47;45995:131;46121:4;45995:131;:::i;:::-;45987:139;;45714:419;;;:::o;46139:235::-;46279:34;46275:1;46267:6;46263:14;46256:58;46348:18;46343:2;46335:6;46331:15;46324:43;46139:235;:::o;46380:366::-;46522:3;46543:67;46607:2;46602:3;46543:67;:::i;:::-;46536:74;;46619:93;46708:3;46619:93;:::i;:::-;46737:2;46732:3;46728:12;46721:19;;46380:366;;;:::o;46752:419::-;46918:4;46956:2;46945:9;46941:18;46933:26;;47005:9;46999:4;46995:20;46991:1;46980:9;46976:17;46969:47;47033:131;47159:4;47033:131;:::i;:::-;47025:139;;46752:419;;;:::o;47177:137::-;47231:5;47262:6;47256:13;47247:22;;47278:30;47302:5;47278:30;:::i;:::-;47177:137;;;;:::o;47320:345::-;47387:6;47436:2;47424:9;47415:7;47411:23;47407:32;47404:119;;;47442:79;;:::i;:::-;47404:119;47562:1;47587:61;47640:7;47631:6;47620:9;47616:22;47587:61;:::i;:::-;47577:71;;47533:125;47320:345;;;;:::o;47671:775::-;47904:4;47942:3;47931:9;47927:19;47919:27;;47956:71;48024:1;48013:9;48009:17;48000:6;47956:71;:::i;:::-;48037:72;48105:2;48094:9;48090:18;48081:6;48037:72;:::i;:::-;48119;48187:2;48176:9;48172:18;48163:6;48119:72;:::i;:::-;48201;48269:2;48258:9;48254:18;48245:6;48201:72;:::i;:::-;48283:73;48351:3;48340:9;48336:19;48327:6;48283:73;:::i;:::-;48366;48434:3;48423:9;48419:19;48410:6;48366:73;:::i;:::-;47671:775;;;;;;;;;:::o;48452:170::-;48592:22;48588:1;48580:6;48576:14;48569:46;48452:170;:::o;48628:366::-;48770:3;48791:67;48855:2;48850:3;48791:67;:::i;:::-;48784:74;;48867:93;48956:3;48867:93;:::i;:::-;48985:2;48980:3;48976:12;48969:19;;48628:366;;;:::o;49000:419::-;49166:4;49204:2;49193:9;49189:18;49181:26;;49253:9;49247:4;49243:20;49239:1;49228:9;49224:17;49217:47;49281:131;49407:4;49281:131;:::i;:::-;49273:139;;49000:419;;;:::o;49425:194::-;49465:4;49485:20;49503:1;49485:20;:::i;:::-;49480:25;;49519:20;49537:1;49519:20;:::i;:::-;49514:25;;49563:1;49560;49556:9;49548:17;;49587:1;49581:4;49578:11;49575:37;;;49592:18;;:::i;:::-;49575:37;49425:194;;;;:::o;49625:225::-;49765:34;49761:1;49753:6;49749:14;49742:58;49834:8;49829:2;49821:6;49817:15;49810:33;49625:225;:::o;49856:366::-;49998:3;50019:67;50083:2;50078:3;50019:67;:::i;:::-;50012:74;;50095:93;50184:3;50095:93;:::i;:::-;50213:2;50208:3;50204:12;50197:19;;49856:366;;;:::o;50228:419::-;50394:4;50432:2;50421:9;50417:18;50409:26;;50481:9;50475:4;50471:20;50467:1;50456:9;50452:17;50445:47;50509:131;50635:4;50509:131;:::i;:::-;50501:139;;50228:419;;;:::o;50653:147::-;50754:11;50791:3;50776:18;;50653:147;;;;:::o;50806:114::-;;:::o;50926:398::-;51085:3;51106:83;51187:1;51182:3;51106:83;:::i;:::-;51099:90;;51198:93;51287:3;51198:93;:::i;:::-;51316:1;51311:3;51307:11;51300:18;;50926:398;;;:::o;51330:379::-;51514:3;51536:147;51679:3;51536:147;:::i;:::-;51529:154;;51700:3;51693:10;;51330:379;;;:::o;51715:143::-;51772:5;51803:6;51797:13;51788:22;;51819:33;51846:5;51819:33;:::i;:::-;51715:143;;;;:::o;51864:351::-;51934:6;51983:2;51971:9;51962:7;51958:23;51954:32;51951:119;;;51989:79;;:::i;:::-;51951:119;52109:1;52134:64;52190:7;52181:6;52170:9;52166:22;52134:64;:::i;:::-;52124:74;;52080:128;51864:351;;;;:::o;52221:85::-;52266:7;52295:5;52284:16;;52221:85;;;:::o;52312:158::-;52370:9;52403:61;52421:42;52430:32;52456:5;52430:32;:::i;:::-;52421:42;:::i;:::-;52403:61;:::i;:::-;52390:74;;52312:158;;;:::o;52476:147::-;52571:45;52610:5;52571:45;:::i;:::-;52566:3;52559:58;52476:147;;:::o;52629:114::-;52696:6;52730:5;52724:12;52714:22;;52629:114;;;:::o;52749:184::-;52848:11;52882:6;52877:3;52870:19;52922:4;52917:3;52913:14;52898:29;;52749:184;;;;:::o;52939:132::-;53006:4;53029:3;53021:11;;53059:4;53054:3;53050:14;53042:22;;52939:132;;;:::o;53077:108::-;53154:24;53172:5;53154:24;:::i;:::-;53149:3;53142:37;53077:108;;:::o;53191:179::-;53260:10;53281:46;53323:3;53315:6;53281:46;:::i;:::-;53359:4;53354:3;53350:14;53336:28;;53191:179;;;;:::o;53376:113::-;53446:4;53478;53473:3;53469:14;53461:22;;53376:113;;;:::o;53525:732::-;53644:3;53673:54;53721:5;53673:54;:::i;:::-;53743:86;53822:6;53817:3;53743:86;:::i;:::-;53736:93;;53853:56;53903:5;53853:56;:::i;:::-;53932:7;53963:1;53948:284;53973:6;53970:1;53967:13;53948:284;;;54049:6;54043:13;54076:63;54135:3;54120:13;54076:63;:::i;:::-;54069:70;;54162:60;54215:6;54162:60;:::i;:::-;54152:70;;54008:224;53995:1;53992;53988:9;53983:14;;53948:284;;;53952:14;54248:3;54241:10;;53649:608;;;53525:732;;;;:::o;54263:831::-;54526:4;54564:3;54553:9;54549:19;54541:27;;54578:71;54646:1;54635:9;54631:17;54622:6;54578:71;:::i;:::-;54659:80;54735:2;54724:9;54720:18;54711:6;54659:80;:::i;:::-;54786:9;54780:4;54776:20;54771:2;54760:9;54756:18;54749:48;54814:108;54917:4;54908:6;54814:108;:::i;:::-;54806:116;;54932:72;55000:2;54989:9;54985:18;54976:6;54932:72;:::i;:::-;55014:73;55082:3;55071:9;55067:19;55058:6;55014:73;:::i;:::-;54263:831;;;;;;;;:::o
Swarm Source
ipfs://392ceab17d50262ea62bc3499f749f46ebd15545f76014b551b866ed5b5d3bf1
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.