Token The Investor Network
Overview ERC20
Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,000,000 INV
Holders:
23 addresses
Transfers:
-
Contract:
Decimals:
9
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TheInvestorNetwork
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2022-11-23 */ /* The Investor Network https://t.me/TheInvestorPortal https://theinvestor.network */ // SPDX-License-Identifier: MIT 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) 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 9; } 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 {} } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract TheInvestorNetwork is ERC20, Ownable { IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; /* Dividend Vars */ /* Will fail if totalSupply changes */ uint256 public totalDividends; uint256 public numberOfPostedDividends; uint256 public totalWithdrawn; mapping(address => uint256) public _withdrawn; mapping(address => uint256) public _totalReceived; mapping(address => uint256) private lastKnownTotalDividends; event DividendWithdrawn(address indexed addr, uint256 amt, bool success); /* */ bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyInvestingFee; uint256 public sellInvestingFee; uint256 public tokensForInvesting; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("The Investor Network", "INV") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506 ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyInvestingFee = 6; uint256 _sellInvestingFee = 6; uint256 totalSupply = 1 * 1e6 * 1e9; maxTransactionAmount = 2 * 1e4 * 1e9; maxWallet = 2 * 1e4 * 1e9; swapTokensAtAmount = totalSupply / 1000; buyInvestingFee = _buyInvestingFee; sellInvestingFee = _sellInvestingFee; devWallet = address(0xC01bF8e73612dc52F91b46cEF73d2495c62e6978); // 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); } receive() external payable { } function postDividend() external payable { totalDividends += msg.value; numberOfPostedDividends+=1; } function clearStuckDividends() external onlyOwner { (bool success, ) = address(msg.sender).call{value: address(this).balance}(""); require(success, "Failed to send Ether"); //totalDividends = 0; } function setDividendMode() external onlyOwner { buyInvestingFee = 3; sellInvestingFee = 12; } function setDefaultTaxes() external onlyOwner { buyInvestingFee = 6; sellInvestingFee = 6; } function reduceTaxes(uint256 newBuy, uint256 newSell) external onlyOwner { require(newBuy <= buyInvestingFee, "Can't increase buy tax"); require(newSell <= sellInvestingFee, "Can't increase sell tax"); buyInvestingFee = newBuy; sellInvestingFee = newSell; } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function dividendCheck(address addr) public { uint256 entitled = newDividends(addr); lastKnownTotalDividends[addr] = totalDividends; _totalReceived[addr] += entitled; } //Dividends not accounted for in the '_totalReceived' mapping function newDividends(address addr) public view returns(uint256) { uint256 divDiff = totalDividends - lastKnownTotalDividends[addr]; return divDiff * balanceOf(addr) / totalSupply(); } function withdrawDividend(uint256 amt) public { dividendCheck(msg.sender); uint256 claimable = _totalReceived[msg.sender] - _withdrawn[msg.sender]; require(amt <= claimable, "Can't claim more than your allowance"); _withdrawn[msg.sender] += amt; (bool success, ) = address(msg.sender).call{value: amt}(""); totalWithdrawn += amt; emit DividendWithdrawn(msg.sender, amt, success); } //cannot be used internally - simulates the dividend check function claimableDividendsLookahead(address addr) external view returns(uint256) { return _totalReceived[addr] - _withdrawn[addr] + newDividends(addr); } function withdrawAll() external { uint256 claimable = _totalReceived[msg.sender] - _withdrawn[msg.sender]; withdrawDividend(claimable); } // 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 excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } dividendCheck(from); dividendCheck(to); 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] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if 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] && sellInvestingFee > 0) { fees = amount * sellInvestingFee / 100; tokensForInvesting += fees; } // on buy else if (automatedMarketMakerPairs[from] && buyInvestingFee > 0) { fees = amount * buyInvestingFee / 100; tokensForInvesting += fees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); bool success; if (contractBalance == 0 || tokensForInvesting == 0) { return; } if (contractBalance > swapTokensAtAmount * 30) { contractBalance = swapTokensAtAmount * 30; } uint256 amountToSwapForETH = contractBalance; uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethForInvesting = address(this).balance - initialETHBalance; tokensForInvesting = 0; (success, ) = address(devWallet).call{value: ethForInvesting}(""); } }
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":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"DividendWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_totalReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_withdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyInvestingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"claimableDividendsLookahead","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"dividendCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"newDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfPostedDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"postDividend","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"reduceTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellInvestingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setDefaultTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setDividendMode","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":"tokensForInvesting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","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":"totalWithdrawn","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":[],"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":"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":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdrawDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280601481526020017f54686520496e766573746f72204e6574776f726b0000000000000000000000008152506040518060400160405280600381526020017f494e5600000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e7929190620009e0565b50806004908051906020019062000100929190620009e0565b5050506200012362000117620004a060201b60201c565b620004a860201b60201c565b6000731b02da8cb0d097eb8d57a175b88c7d8b4799750690506200014f8160016200056e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000afa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000283919062000afa565b6040518363ffffffff1660e01b8152600401620002a292919062000b3d565b6020604051808303816000875af1158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e8919062000afa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033060a05160016200056e60201b60201c565b6200034560a05160016200065860201b60201c565b600060069050600060069050600066038d7ea4c6800090506512309ce540006007819055506512309ce540006009819055506103e88162000387919062000bd2565b600881905550826011819055508160128190555073c01bf8e73612dc52f91b46cef73d2495c62e6978600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200041262000404620006f960201b60201c565b60016200072360201b60201c565b620004253060016200072360201b60201c565b6200043a61dead60016200072360201b60201c565b6200045c6200044e620006f960201b60201c565b60016200056e60201b60201c565b6200046f3060016200056e60201b60201c565b6200048461dead60016200056e60201b60201c565b6200049633826200085d60201b60201c565b5050505062000e29565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200057e620004a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005a4620006f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f49062000c6b565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000733620004a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000759620006f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a99062000c6b565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000851919062000caa565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c79062000d17565b60405180910390fd5b620008e460008383620009d660201b60201c565b8060026000828254620008f8919062000d39565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200094f919062000d39565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009b6919062000da7565b60405180910390a3620009d260008383620009db60201b60201c565b5050565b505050565b505050565b828054620009ee9062000df3565b90600052602060002090601f01602090048101928262000a12576000855562000a5e565b82601f1062000a2d57805160ff191683800117855562000a5e565b8280016001018555821562000a5e579182015b8281111562000a5d57825182559160200191906001019062000a40565b5b50905062000a6d919062000a71565b5090565b5b8082111562000a8c57600081600090555060010162000a72565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ac28262000a95565b9050919050565b62000ad48162000ab5565b811462000ae057600080fd5b50565b60008151905062000af48162000ac9565b92915050565b60006020828403121562000b135762000b1262000a90565b5b600062000b238482850162000ae3565b91505092915050565b62000b378162000ab5565b82525050565b600060408201905062000b54600083018562000b2c565b62000b63602083018462000b2c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bdf8262000b6a565b915062000bec8362000b6a565b92508262000bff5762000bfe62000b74565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000c5360208362000c0a565b915062000c608262000c1b565b602082019050919050565b6000602082019050818103600083015262000c868162000c44565b9050919050565b60008115159050919050565b62000ca48162000c8d565b82525050565b600060208201905062000cc1600083018462000c99565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000cff601f8362000c0a565b915062000d0c8262000cc7565b602082019050919050565b6000602082019050818103600083015262000d328162000cf0565b9050919050565b600062000d468262000b6a565b915062000d538362000b6a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d8b5762000d8a62000ba3565b5b828201905092915050565b62000da18162000b6a565b82525050565b600060208201905062000dbe600083018462000d96565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e0c57607f821691505b6020821081141562000e235762000e2262000dc4565b5b50919050565b60805160a0516146ff62000e6b600039600081816110e00152611a71015260008181610d060152818161326e0152818161334f015261337601526146ff6000f3fe6080604052600436106102cd5760003560e01c8063751039fc11610175578063a9059cbb116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610ad6578063e56e4be514610b01578063f8b45b0514610b3e578063f9ecb75514610b69576102d4565b8063d257b34f14610a45578063dab2927c14610a82578063dd62ed3e14610a99576102d4565b8063a9059cbb14610923578063b62496f514610960578063bbc0c7421461099d578063c0246668146109c8578063c1d781a3146109f1578063c8c8ebe414610a1a576102d4565b80638ea5220f1161012e5780638ea5220f14610813578063924de9b71461083e57806395d89b4114610867578063997664d7146108925780639a7a23d6146108bd578063a457c2d7146108e6576102d4565b8063751039fc1461073b5780637571336a1461076657806379f26fb51461078f578063853828b6146107ba5780638a8c523c146107d15780638da5cb5b146107e8576102d4565b806340995564116102345780634f2f6eb4116101ed5780635d9bd8b2116101c75780635d9bd8b2146106935780636ddd1713146106bc57806370a08231146106e7578063715018a614610724576102d4565b80634f2f6eb4146105ee5780634fbee1931461062b57806355a49b7414610668576102d4565b8063409955641461050057806344fbb2741461052b57806349bd5a5e146105565780634a002966146105815780634a62bb65146105985780634b319713146105c3576102d4565b806318160ddd1161028657806318160ddd146103fd5780631b7a619c1461042857806323b872dd146104325780632ff5fe1e1461046f578063313ce5671461049857806339509351146104c3576102d4565b806306fdde03146102d9578063095ea7b31461030457806310d5de5314610341578063125b94e51461037e5780631694505e14610395578063180de7e8146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610ba6565b6040516102fb91906134a5565b60405180910390f35b34801561031057600080fd5b5061032b60048036038101906103269190613560565b610c38565b60405161033891906135bb565b60405180910390f35b34801561034d57600080fd5b50610368600480360381019061036391906135d6565b610c56565b60405161037591906135bb565b60405180910390f35b34801561038a57600080fd5b50610393610c76565b005b3480156103a157600080fd5b506103aa610d04565b6040516103b79190613662565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e291906135d6565b610d28565b6040516103f4919061368c565b60405180910390f35b34801561040957600080fd5b50610412610dce565b60405161041f919061368c565b60405180910390f35b610430610dd8565b005b34801561043e57600080fd5b50610459600480360381019061045491906136a7565b610e0d565b60405161046691906135bb565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906136fa565b610f05565b005b3480156104a457600080fd5b506104ad61101d565b6040516104ba9190613756565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190613560565b611026565b6040516104f791906135bb565b60405180910390f35b34801561050c57600080fd5b506105156110d2565b604051610522919061368c565b60405180910390f35b34801561053757600080fd5b506105406110d8565b60405161054d919061368c565b60405180910390f35b34801561056257600080fd5b5061056b6110de565b6040516105789190613780565b60405180910390f35b34801561058d57600080fd5b50610596611102565b005b3480156105a457600080fd5b506105ad61122d565b6040516105ba91906135bb565b60405180910390f35b3480156105cf57600080fd5b506105d8611240565b6040516105e5919061368c565b60405180910390f35b3480156105fa57600080fd5b50610615600480360381019061061091906135d6565b611246565b604051610622919061368c565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d91906135d6565b61125e565b60405161065f91906135bb565b60405180910390f35b34801561067457600080fd5b5061067d6112b4565b60405161068a919061368c565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b5919061379b565b6112ba565b005b3480156106c857600080fd5b506106d16114c4565b6040516106de91906135bb565b60405180910390f35b3480156106f357600080fd5b5061070e600480360381019061070991906135d6565b6114d7565b60405161071b919061368c565b60405180910390f35b34801561073057600080fd5b5061073961151f565b005b34801561074757600080fd5b506107506115a7565b60405161075d91906135bb565b60405180910390f35b34801561077257600080fd5b5061078d600480360381019061078891906137f4565b611647565b005b34801561079b57600080fd5b506107a461171e565b6040516107b1919061368c565b60405180910390f35b3480156107c657600080fd5b506107cf611724565b005b3480156107dd57600080fd5b506107e66117be565b005b3480156107f457600080fd5b506107fd611872565b60405161080a9190613780565b60405180910390f35b34801561081f57600080fd5b5061082861189c565b6040516108359190613780565b60405180910390f35b34801561084a57600080fd5b5061086560048036038101906108609190613834565b6118c2565b005b34801561087357600080fd5b5061087c61195b565b60405161088991906134a5565b60405180910390f35b34801561089e57600080fd5b506108a76119ed565b6040516108b4919061368c565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df91906137f4565b6119f3565b005b3480156108f257600080fd5b5061090d60048036038101906109089190613560565b611b0c565b60405161091a91906135bb565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190613560565b611bf7565b60405161095791906135bb565b60405180910390f35b34801561096c57600080fd5b50610987600480360381019061098291906135d6565b611c15565b60405161099491906135bb565b60405180910390f35b3480156109a957600080fd5b506109b2611c35565b6040516109bf91906135bb565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea91906137f4565b611c48565b005b3480156109fd57600080fd5b50610a186004803603810190610a1391906135d6565b611d6d565b005b348015610a2657600080fd5b50610a2f611e1a565b604051610a3c919061368c565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a67919061379b565b611e20565b604051610a7991906135bb565b60405180910390f35b348015610a8e57600080fd5b50610a97611f75565b005b348015610aa557600080fd5b50610ac06004803603810190610abb9190613861565b612003565b604051610acd919061368c565b60405180910390f35b348015610ae257600080fd5b50610aeb61208a565b604051610af8919061368c565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b2391906135d6565b612090565b604051610b35919061368c565b60405180910390f35b348015610b4a57600080fd5b50610b536120a8565b604051610b60919061368c565b60405180910390f35b348015610b7557600080fd5b50610b906004803603810190610b8b91906135d6565b6120ae565b604051610b9d919061368c565b60405180910390f35b606060038054610bb5906138d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610be1906138d0565b8015610c2e5780601f10610c0357610100808354040283529160200191610c2e565b820191906000526020600020905b815481529060010190602001808311610c1157829003601f168201915b5050505050905090565b6000610c4c610c4561212e565b8484612136565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b610c7e61212e565b73ffffffffffffffffffffffffffffffffffffffff16610c9c611872565b73ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce99061394e565b60405180910390fd5b60066011819055506006601281905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610d33826120ae565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbd919061399d565b610dc791906139d1565b9050919050565b6000600254905090565b34600a6000828254610dea91906139d1565b925050819055506001600b6000828254610e0491906139d1565b92505081905550565b6000610e1a848484612301565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e6561212e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90613a99565b60405180910390fd5b610ef985610ef161212e565b858403612136565b60019150509392505050565b610f0d61212e565b73ffffffffffffffffffffffffffffffffffffffff16610f2b611872565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f789061394e565b60405180910390fd5b601154821115610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90613b05565b60405180910390fd5b60125481111561100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290613b71565b60405180910390fd5b81601181905550806012819055505050565b60006009905090565b60006110c861103361212e565b84846001600061104161212e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110c391906139d1565b612136565b6001905092915050565b60125481565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b61110a61212e565b73ffffffffffffffffffffffffffffffffffffffff16611128611872565b73ffffffffffffffffffffffffffffffffffffffff161461117e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111759061394e565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516111a490613bc2565b60006040518083038185875af1925050503d80600081146111e1576040519150601f19603f3d011682016040523d82523d6000602084013e6111e6565b606091505b505090508061122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190613c23565b60405180910390fd5b50565b601060009054906101000a900460ff1681565b600c5481565b600d6020528060005260406000206000915090505481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b6112c333611d6d565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461134f919061399d565b905080821115611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613cb5565b60405180910390fd5b81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e391906139d1565b9250508190555060003373ffffffffffffffffffffffffffffffffffffffff168360405161141090613bc2565b60006040518083038185875af1925050503d806000811461144d576040519150601f19603f3d011682016040523d82523d6000602084013e611452565b606091505b5050905082600c600082825461146891906139d1565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f4483f0f5722e808851ec73e28bf37d50b6a3c4d7bde2d122089560c0f988b62484836040516114b7929190613cd5565b60405180910390a2505050565b601060029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61152761212e565b73ffffffffffffffffffffffffffffffffffffffff16611545611872565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115929061394e565b60405180910390fd5b6115a56000612cc9565b565b60006115b161212e565b73ffffffffffffffffffffffffffffffffffffffff166115cf611872565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c9061394e565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b61164f61212e565b73ffffffffffffffffffffffffffffffffffffffff1661166d611872565b73ffffffffffffffffffffffffffffffffffffffff16146116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba9061394e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b0919061399d565b90506117bb816112ba565b50565b6117c661212e565b73ffffffffffffffffffffffffffffffffffffffff166117e4611872565b73ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118319061394e565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118ca61212e565b73ffffffffffffffffffffffffffffffffffffffff166118e8611872565b73ffffffffffffffffffffffffffffffffffffffff161461193e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119359061394e565b60405180910390fd5b80601060026101000a81548160ff02191690831515021790555050565b60606004805461196a906138d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611996906138d0565b80156119e35780601f106119b8576101008083540402835291602001916119e3565b820191906000526020600020905b8154815290600101906020018083116119c657829003601f168201915b5050505050905090565b600a5481565b6119fb61212e565b73ffffffffffffffffffffffffffffffffffffffff16611a19611872565b73ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a669061394e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613d70565b60405180910390fd5b611b088282612d8f565b5050565b60008060016000611b1b61212e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90613e02565b60405180910390fd5b611bec611be361212e565b85858403612136565b600191505092915050565b6000611c0b611c0461212e565b8484612301565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b611c5061212e565b73ffffffffffffffffffffffffffffffffffffffff16611c6e611872565b73ffffffffffffffffffffffffffffffffffffffff1614611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061394e565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d6191906135bb565b60405180910390a25050565b6000611d78826120ae565b9050600a54600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e0f91906139d1565b925050819055505050565b60075481565b6000611e2a61212e565b73ffffffffffffffffffffffffffffffffffffffff16611e48611872565b73ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e959061394e565b60405180910390fd5b620186a06001611eac610dce565b611eb69190613e22565b611ec09190613eab565b821015611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613f4e565b60405180910390fd5b6103e86005611f0f610dce565b611f199190613e22565b611f239190613eab565b821115611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c90613fe0565b60405180910390fd5b8160088190555060019050919050565b611f7d61212e565b73ffffffffffffffffffffffffffffffffffffffff16611f9b611872565b73ffffffffffffffffffffffffffffffffffffffff1614611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe89061394e565b60405180910390fd5b6003601181905550600c601281905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600e6020528060005260406000206000915090505481565b60095481565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600a546120fe919061399d565b9050612108610dce565b612111846114d7565b8261211c9190613e22565b6121269190613eab565b915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614072565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220d90614104565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122f4919061368c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236890614196565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d890614228565b60405180910390fd5b60008114156123fb576123f683836000612e30565b612cc4565b61240483611d6d565b61240d82611d6d565b601060009054906101000a900460ff16156129085761242a611872565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124985750612468611872565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561250b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125245750600560149054906101000a900460ff16155b1561290757601060019054906101000a900460ff1661261e57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125de5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490614294565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126c15750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127685760075481111561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270290614326565b60405180910390fd5b600954612717836114d7565b8261272291906139d1565b1115612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90614392565b60405180910390fd5b612906565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561280b5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561285a57600754811115612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284c90614424565b60405180910390fd5b612905565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612904576009546128b7836114d7565b826128c291906139d1565b1115612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa90614392565b60405180910390fd5b5b5b5b5b5b6000612913306114d7565b9050600060085482101590508080156129385750601060029054906101000a900460ff165b80156129515750600560149054906101000a900460ff16155b80156129a75750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129fd5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a535750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a97576001600560146101000a81548160ff021916908315150217905550612a7b6130b1565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b4d5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b5757600090505b60008115612cb457601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bba57506000601254115b15612bf957606460125486612bcf9190613e22565b612bd99190613eab565b90508060136000828254612bed91906139d1565b92505081905550612c90565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c5457506000601154115b15612c8f57606460115486612c699190613e22565b612c739190613eab565b90508060136000828254612c8791906139d1565b925050819055505b5b6000811115612ca557612ca4873083612e30565b5b8085612cb1919061399d565b94505b612cbf878787612e30565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9790614196565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0790614228565b60405180910390fd5b612f1b8383836131c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f98906144b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461303491906139d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613098919061368c565b60405180910390a36130ab8484846131ca565b50505050565b60006130bc306114d7565b90506000808214806130d057506000601354145b156130dc5750506131c3565b601e6008546130eb9190613e22565b82111561310457601e6008546131019190613e22565b91505b60008290506000479050613117826131cf565b60008147613125919061399d565b90506000601381905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161317590613bc2565b60006040518083038185875af1925050503d80600081146131b2576040519150601f19603f3d011682016040523d82523d6000602084013e6131b7565b606091505b50508094505050505050505b565b505050565b505050565b6000600267ffffffffffffffff8111156131ec576131eb6144d6565b5b60405190808252806020026020018201604052801561321a5781602001602082028036833780820191505090505b509050308160008151811061323257613231614505565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fb9190614549565b8160018151811061330f5761330e614505565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613374307f000000000000000000000000000000000000000000000000000000000000000084612136565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133d695949392919061466f565b600060405180830381600087803b1580156133f057600080fd5b505af1158015613404573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561344657808201518184015260208101905061342b565b83811115613455576000848401525b50505050565b6000601f19601f8301169050919050565b60006134778261340c565b6134818185613417565b9350613491818560208601613428565b61349a8161345b565b840191505092915050565b600060208201905081810360008301526134bf818461346c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134f7826134cc565b9050919050565b613507816134ec565b811461351257600080fd5b50565b600081359050613524816134fe565b92915050565b6000819050919050565b61353d8161352a565b811461354857600080fd5b50565b60008135905061355a81613534565b92915050565b60008060408385031215613577576135766134c7565b5b600061358585828601613515565b92505060206135968582860161354b565b9150509250929050565b60008115159050919050565b6135b5816135a0565b82525050565b60006020820190506135d060008301846135ac565b92915050565b6000602082840312156135ec576135eb6134c7565b5b60006135fa84828501613515565b91505092915050565b6000819050919050565b600061362861362361361e846134cc565b613603565b6134cc565b9050919050565b600061363a8261360d565b9050919050565b600061364c8261362f565b9050919050565b61365c81613641565b82525050565b60006020820190506136776000830184613653565b92915050565b6136868161352a565b82525050565b60006020820190506136a1600083018461367d565b92915050565b6000806000606084860312156136c0576136bf6134c7565b5b60006136ce86828701613515565b93505060206136df86828701613515565b92505060406136f08682870161354b565b9150509250925092565b60008060408385031215613711576137106134c7565b5b600061371f8582860161354b565b92505060206137308582860161354b565b9150509250929050565b600060ff82169050919050565b6137508161373a565b82525050565b600060208201905061376b6000830184613747565b92915050565b61377a816134ec565b82525050565b60006020820190506137956000830184613771565b92915050565b6000602082840312156137b1576137b06134c7565b5b60006137bf8482850161354b565b91505092915050565b6137d1816135a0565b81146137dc57600080fd5b50565b6000813590506137ee816137c8565b92915050565b6000806040838503121561380b5761380a6134c7565b5b600061381985828601613515565b925050602061382a858286016137df565b9150509250929050565b60006020828403121561384a576138496134c7565b5b6000613858848285016137df565b91505092915050565b60008060408385031215613878576138776134c7565b5b600061388685828601613515565b925050602061389785828601613515565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138e857607f821691505b602082108114156138fc576138fb6138a1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613938602083613417565b915061394382613902565b602082019050919050565b600060208201905081810360008301526139678161392b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139a88261352a565b91506139b38361352a565b9250828210156139c6576139c561396e565b5b828203905092915050565b60006139dc8261352a565b91506139e78361352a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a1c57613a1b61396e565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a83602883613417565b9150613a8e82613a27565b604082019050919050565b60006020820190508181036000830152613ab281613a76565b9050919050565b7f43616e277420696e637265617365206275792074617800000000000000000000600082015250565b6000613aef601683613417565b9150613afa82613ab9565b602082019050919050565b60006020820190508181036000830152613b1e81613ae2565b9050919050565b7f43616e277420696e6372656173652073656c6c20746178000000000000000000600082015250565b6000613b5b601783613417565b9150613b6682613b25565b602082019050919050565b60006020820190508181036000830152613b8a81613b4e565b9050919050565b600081905092915050565b50565b6000613bac600083613b91565b9150613bb782613b9c565b600082019050919050565b6000613bcd82613b9f565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000613c0d601483613417565b9150613c1882613bd7565b602082019050919050565b60006020820190508181036000830152613c3c81613c00565b9050919050565b7f43616e277420636c61696d206d6f7265207468616e20796f757220616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613c9f602483613417565b9150613caa82613c43565b604082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b6000604082019050613cea600083018561367d565b613cf760208301846135ac565b9392505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613d5a603983613417565b9150613d6582613cfe565b604082019050919050565b60006020820190508181036000830152613d8981613d4d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613dec602583613417565b9150613df782613d90565b604082019050919050565b60006020820190508181036000830152613e1b81613ddf565b9050919050565b6000613e2d8261352a565b9150613e388361352a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e7157613e7061396e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eb68261352a565b9150613ec18361352a565b925082613ed157613ed0613e7c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613f38603583613417565b9150613f4382613edc565b604082019050919050565b60006020820190508181036000830152613f6781613f2b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613fca603483613417565b9150613fd582613f6e565b604082019050919050565b60006020820190508181036000830152613ff981613fbd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061405c602483613417565b915061406782614000565b604082019050919050565b6000602082019050818103600083015261408b8161404f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ee602283613417565b91506140f982614092565b604082019050919050565b6000602082019050818103600083015261411d816140e1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614180602583613417565b915061418b82614124565b604082019050919050565b600060208201905081810360008301526141af81614173565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614212602383613417565b915061421d826141b6565b604082019050919050565b6000602082019050818103600083015261424181614205565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061427e601683613417565b915061428982614248565b602082019050919050565b600060208201905081810360008301526142ad81614271565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614310603583613417565b915061431b826142b4565b604082019050919050565b6000602082019050818103600083015261433f81614303565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061437c601383613417565b915061438782614346565b602082019050919050565b600060208201905081810360008301526143ab8161436f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061440e603683613417565b9150614419826143b2565b604082019050919050565b6000602082019050818103600083015261443d81614401565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144a0602683613417565b91506144ab82614444565b604082019050919050565b600060208201905081810360008301526144cf81614493565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614543816134fe565b92915050565b60006020828403121561455f5761455e6134c7565b5b600061456d84828501614534565b91505092915050565b6000819050919050565b600061459b61459661459184614576565b613603565b61352a565b9050919050565b6145ab81614580565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145e6816134ec565b82525050565b60006145f883836145dd565b60208301905092915050565b6000602082019050919050565b600061461c826145b1565b61462681856145bc565b9350614631836145cd565b8060005b8381101561466257815161464988826145ec565b975061465483614604565b925050600181019050614635565b5085935050505092915050565b600060a082019050614684600083018861367d565b61469160208301876145a2565b81810360408301526146a38186614611565b90506146b26060830185613771565b6146bf608083018461367d565b969550505050505056fea2646970667358221220a0db932d0563cf1d04517344d85dcfb6805452fa556db7b8680dd6822045b45164736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106102cd5760003560e01c8063751039fc11610175578063a9059cbb116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610ad6578063e56e4be514610b01578063f8b45b0514610b3e578063f9ecb75514610b69576102d4565b8063d257b34f14610a45578063dab2927c14610a82578063dd62ed3e14610a99576102d4565b8063a9059cbb14610923578063b62496f514610960578063bbc0c7421461099d578063c0246668146109c8578063c1d781a3146109f1578063c8c8ebe414610a1a576102d4565b80638ea5220f1161012e5780638ea5220f14610813578063924de9b71461083e57806395d89b4114610867578063997664d7146108925780639a7a23d6146108bd578063a457c2d7146108e6576102d4565b8063751039fc1461073b5780637571336a1461076657806379f26fb51461078f578063853828b6146107ba5780638a8c523c146107d15780638da5cb5b146107e8576102d4565b806340995564116102345780634f2f6eb4116101ed5780635d9bd8b2116101c75780635d9bd8b2146106935780636ddd1713146106bc57806370a08231146106e7578063715018a614610724576102d4565b80634f2f6eb4146105ee5780634fbee1931461062b57806355a49b7414610668576102d4565b8063409955641461050057806344fbb2741461052b57806349bd5a5e146105565780634a002966146105815780634a62bb65146105985780634b319713146105c3576102d4565b806318160ddd1161028657806318160ddd146103fd5780631b7a619c1461042857806323b872dd146104325780632ff5fe1e1461046f578063313ce5671461049857806339509351146104c3576102d4565b806306fdde03146102d9578063095ea7b31461030457806310d5de5314610341578063125b94e51461037e5780631694505e14610395578063180de7e8146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610ba6565b6040516102fb91906134a5565b60405180910390f35b34801561031057600080fd5b5061032b60048036038101906103269190613560565b610c38565b60405161033891906135bb565b60405180910390f35b34801561034d57600080fd5b50610368600480360381019061036391906135d6565b610c56565b60405161037591906135bb565b60405180910390f35b34801561038a57600080fd5b50610393610c76565b005b3480156103a157600080fd5b506103aa610d04565b6040516103b79190613662565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e291906135d6565b610d28565b6040516103f4919061368c565b60405180910390f35b34801561040957600080fd5b50610412610dce565b60405161041f919061368c565b60405180910390f35b610430610dd8565b005b34801561043e57600080fd5b50610459600480360381019061045491906136a7565b610e0d565b60405161046691906135bb565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906136fa565b610f05565b005b3480156104a457600080fd5b506104ad61101d565b6040516104ba9190613756565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190613560565b611026565b6040516104f791906135bb565b60405180910390f35b34801561050c57600080fd5b506105156110d2565b604051610522919061368c565b60405180910390f35b34801561053757600080fd5b506105406110d8565b60405161054d919061368c565b60405180910390f35b34801561056257600080fd5b5061056b6110de565b6040516105789190613780565b60405180910390f35b34801561058d57600080fd5b50610596611102565b005b3480156105a457600080fd5b506105ad61122d565b6040516105ba91906135bb565b60405180910390f35b3480156105cf57600080fd5b506105d8611240565b6040516105e5919061368c565b60405180910390f35b3480156105fa57600080fd5b50610615600480360381019061061091906135d6565b611246565b604051610622919061368c565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d91906135d6565b61125e565b60405161065f91906135bb565b60405180910390f35b34801561067457600080fd5b5061067d6112b4565b60405161068a919061368c565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b5919061379b565b6112ba565b005b3480156106c857600080fd5b506106d16114c4565b6040516106de91906135bb565b60405180910390f35b3480156106f357600080fd5b5061070e600480360381019061070991906135d6565b6114d7565b60405161071b919061368c565b60405180910390f35b34801561073057600080fd5b5061073961151f565b005b34801561074757600080fd5b506107506115a7565b60405161075d91906135bb565b60405180910390f35b34801561077257600080fd5b5061078d600480360381019061078891906137f4565b611647565b005b34801561079b57600080fd5b506107a461171e565b6040516107b1919061368c565b60405180910390f35b3480156107c657600080fd5b506107cf611724565b005b3480156107dd57600080fd5b506107e66117be565b005b3480156107f457600080fd5b506107fd611872565b60405161080a9190613780565b60405180910390f35b34801561081f57600080fd5b5061082861189c565b6040516108359190613780565b60405180910390f35b34801561084a57600080fd5b5061086560048036038101906108609190613834565b6118c2565b005b34801561087357600080fd5b5061087c61195b565b60405161088991906134a5565b60405180910390f35b34801561089e57600080fd5b506108a76119ed565b6040516108b4919061368c565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df91906137f4565b6119f3565b005b3480156108f257600080fd5b5061090d60048036038101906109089190613560565b611b0c565b60405161091a91906135bb565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190613560565b611bf7565b60405161095791906135bb565b60405180910390f35b34801561096c57600080fd5b50610987600480360381019061098291906135d6565b611c15565b60405161099491906135bb565b60405180910390f35b3480156109a957600080fd5b506109b2611c35565b6040516109bf91906135bb565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea91906137f4565b611c48565b005b3480156109fd57600080fd5b50610a186004803603810190610a1391906135d6565b611d6d565b005b348015610a2657600080fd5b50610a2f611e1a565b604051610a3c919061368c565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a67919061379b565b611e20565b604051610a7991906135bb565b60405180910390f35b348015610a8e57600080fd5b50610a97611f75565b005b348015610aa557600080fd5b50610ac06004803603810190610abb9190613861565b612003565b604051610acd919061368c565b60405180910390f35b348015610ae257600080fd5b50610aeb61208a565b604051610af8919061368c565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b2391906135d6565b612090565b604051610b35919061368c565b60405180910390f35b348015610b4a57600080fd5b50610b536120a8565b604051610b60919061368c565b60405180910390f35b348015610b7557600080fd5b50610b906004803603810190610b8b91906135d6565b6120ae565b604051610b9d919061368c565b60405180910390f35b606060038054610bb5906138d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610be1906138d0565b8015610c2e5780601f10610c0357610100808354040283529160200191610c2e565b820191906000526020600020905b815481529060010190602001808311610c1157829003601f168201915b5050505050905090565b6000610c4c610c4561212e565b8484612136565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b610c7e61212e565b73ffffffffffffffffffffffffffffffffffffffff16610c9c611872565b73ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce99061394e565b60405180910390fd5b60066011819055506006601281905550565b7f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b4799750681565b6000610d33826120ae565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbd919061399d565b610dc791906139d1565b9050919050565b6000600254905090565b34600a6000828254610dea91906139d1565b925050819055506001600b6000828254610e0491906139d1565b92505081905550565b6000610e1a848484612301565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e6561212e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90613a99565b60405180910390fd5b610ef985610ef161212e565b858403612136565b60019150509392505050565b610f0d61212e565b73ffffffffffffffffffffffffffffffffffffffff16610f2b611872565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f789061394e565b60405180910390fd5b601154821115610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90613b05565b60405180910390fd5b60125481111561100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290613b71565b60405180910390fd5b81601181905550806012819055505050565b60006009905090565b60006110c861103361212e565b84846001600061104161212e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110c391906139d1565b612136565b6001905092915050565b60125481565b60115481565b7f000000000000000000000000ef14ed6af5686882ef6024050243d70437e2c8e681565b61110a61212e565b73ffffffffffffffffffffffffffffffffffffffff16611128611872565b73ffffffffffffffffffffffffffffffffffffffff161461117e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111759061394e565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516111a490613bc2565b60006040518083038185875af1925050503d80600081146111e1576040519150601f19603f3d011682016040523d82523d6000602084013e6111e6565b606091505b505090508061122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190613c23565b60405180910390fd5b50565b601060009054906101000a900460ff1681565b600c5481565b600d6020528060005260406000206000915090505481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b6112c333611d6d565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461134f919061399d565b905080821115611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613cb5565b60405180910390fd5b81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e391906139d1565b9250508190555060003373ffffffffffffffffffffffffffffffffffffffff168360405161141090613bc2565b60006040518083038185875af1925050503d806000811461144d576040519150601f19603f3d011682016040523d82523d6000602084013e611452565b606091505b5050905082600c600082825461146891906139d1565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f4483f0f5722e808851ec73e28bf37d50b6a3c4d7bde2d122089560c0f988b62484836040516114b7929190613cd5565b60405180910390a2505050565b601060029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61152761212e565b73ffffffffffffffffffffffffffffffffffffffff16611545611872565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115929061394e565b60405180910390fd5b6115a56000612cc9565b565b60006115b161212e565b73ffffffffffffffffffffffffffffffffffffffff166115cf611872565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c9061394e565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b61164f61212e565b73ffffffffffffffffffffffffffffffffffffffff1661166d611872565b73ffffffffffffffffffffffffffffffffffffffff16146116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba9061394e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b0919061399d565b90506117bb816112ba565b50565b6117c661212e565b73ffffffffffffffffffffffffffffffffffffffff166117e4611872565b73ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118319061394e565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118ca61212e565b73ffffffffffffffffffffffffffffffffffffffff166118e8611872565b73ffffffffffffffffffffffffffffffffffffffff161461193e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119359061394e565b60405180910390fd5b80601060026101000a81548160ff02191690831515021790555050565b60606004805461196a906138d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611996906138d0565b80156119e35780601f106119b8576101008083540402835291602001916119e3565b820191906000526020600020905b8154815290600101906020018083116119c657829003601f168201915b5050505050905090565b600a5481565b6119fb61212e565b73ffffffffffffffffffffffffffffffffffffffff16611a19611872565b73ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a669061394e565b60405180910390fd5b7f000000000000000000000000ef14ed6af5686882ef6024050243d70437e2c8e673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613d70565b60405180910390fd5b611b088282612d8f565b5050565b60008060016000611b1b61212e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90613e02565b60405180910390fd5b611bec611be361212e565b85858403612136565b600191505092915050565b6000611c0b611c0461212e565b8484612301565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b611c5061212e565b73ffffffffffffffffffffffffffffffffffffffff16611c6e611872565b73ffffffffffffffffffffffffffffffffffffffff1614611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061394e565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d6191906135bb565b60405180910390a25050565b6000611d78826120ae565b9050600a54600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e0f91906139d1565b925050819055505050565b60075481565b6000611e2a61212e565b73ffffffffffffffffffffffffffffffffffffffff16611e48611872565b73ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e959061394e565b60405180910390fd5b620186a06001611eac610dce565b611eb69190613e22565b611ec09190613eab565b821015611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613f4e565b60405180910390fd5b6103e86005611f0f610dce565b611f199190613e22565b611f239190613eab565b821115611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c90613fe0565b60405180910390fd5b8160088190555060019050919050565b611f7d61212e565b73ffffffffffffffffffffffffffffffffffffffff16611f9b611872565b73ffffffffffffffffffffffffffffffffffffffff1614611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe89061394e565b60405180910390fd5b6003601181905550600c601281905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600e6020528060005260406000206000915090505481565b60095481565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600a546120fe919061399d565b9050612108610dce565b612111846114d7565b8261211c9190613e22565b6121269190613eab565b915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614072565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220d90614104565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122f4919061368c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236890614196565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d890614228565b60405180910390fd5b60008114156123fb576123f683836000612e30565b612cc4565b61240483611d6d565b61240d82611d6d565b601060009054906101000a900460ff16156129085761242a611872565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124985750612468611872565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561250b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125245750600560149054906101000a900460ff16155b1561290757601060019054906101000a900460ff1661261e57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125de5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490614294565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126c15750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127685760075481111561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270290614326565b60405180910390fd5b600954612717836114d7565b8261272291906139d1565b1115612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90614392565b60405180910390fd5b612906565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561280b5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561285a57600754811115612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284c90614424565b60405180910390fd5b612905565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612904576009546128b7836114d7565b826128c291906139d1565b1115612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa90614392565b60405180910390fd5b5b5b5b5b5b6000612913306114d7565b9050600060085482101590508080156129385750601060029054906101000a900460ff165b80156129515750600560149054906101000a900460ff16155b80156129a75750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129fd5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a535750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a97576001600560146101000a81548160ff021916908315150217905550612a7b6130b1565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b4d5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b5757600090505b60008115612cb457601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bba57506000601254115b15612bf957606460125486612bcf9190613e22565b612bd99190613eab565b90508060136000828254612bed91906139d1565b92505081905550612c90565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c5457506000601154115b15612c8f57606460115486612c699190613e22565b612c739190613eab565b90508060136000828254612c8791906139d1565b925050819055505b5b6000811115612ca557612ca4873083612e30565b5b8085612cb1919061399d565b94505b612cbf878787612e30565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9790614196565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0790614228565b60405180910390fd5b612f1b8383836131c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f98906144b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461303491906139d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613098919061368c565b60405180910390a36130ab8484846131ca565b50505050565b60006130bc306114d7565b90506000808214806130d057506000601354145b156130dc5750506131c3565b601e6008546130eb9190613e22565b82111561310457601e6008546131019190613e22565b91505b60008290506000479050613117826131cf565b60008147613125919061399d565b90506000601381905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161317590613bc2565b60006040518083038185875af1925050503d80600081146131b2576040519150601f19603f3d011682016040523d82523d6000602084013e6131b7565b606091505b50508094505050505050505b565b505050565b505050565b6000600267ffffffffffffffff8111156131ec576131eb6144d6565b5b60405190808252806020026020018201604052801561321a5781602001602082028036833780820191505090505b509050308160008151811061323257613231614505565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b4799750673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fb9190614549565b8160018151811061330f5761330e614505565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613374307f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b4799750684612136565b7f0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b4799750673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133d695949392919061466f565b600060405180830381600087803b1580156133f057600080fd5b505af1158015613404573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561344657808201518184015260208101905061342b565b83811115613455576000848401525b50505050565b6000601f19601f8301169050919050565b60006134778261340c565b6134818185613417565b9350613491818560208601613428565b61349a8161345b565b840191505092915050565b600060208201905081810360008301526134bf818461346c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134f7826134cc565b9050919050565b613507816134ec565b811461351257600080fd5b50565b600081359050613524816134fe565b92915050565b6000819050919050565b61353d8161352a565b811461354857600080fd5b50565b60008135905061355a81613534565b92915050565b60008060408385031215613577576135766134c7565b5b600061358585828601613515565b92505060206135968582860161354b565b9150509250929050565b60008115159050919050565b6135b5816135a0565b82525050565b60006020820190506135d060008301846135ac565b92915050565b6000602082840312156135ec576135eb6134c7565b5b60006135fa84828501613515565b91505092915050565b6000819050919050565b600061362861362361361e846134cc565b613603565b6134cc565b9050919050565b600061363a8261360d565b9050919050565b600061364c8261362f565b9050919050565b61365c81613641565b82525050565b60006020820190506136776000830184613653565b92915050565b6136868161352a565b82525050565b60006020820190506136a1600083018461367d565b92915050565b6000806000606084860312156136c0576136bf6134c7565b5b60006136ce86828701613515565b93505060206136df86828701613515565b92505060406136f08682870161354b565b9150509250925092565b60008060408385031215613711576137106134c7565b5b600061371f8582860161354b565b92505060206137308582860161354b565b9150509250929050565b600060ff82169050919050565b6137508161373a565b82525050565b600060208201905061376b6000830184613747565b92915050565b61377a816134ec565b82525050565b60006020820190506137956000830184613771565b92915050565b6000602082840312156137b1576137b06134c7565b5b60006137bf8482850161354b565b91505092915050565b6137d1816135a0565b81146137dc57600080fd5b50565b6000813590506137ee816137c8565b92915050565b6000806040838503121561380b5761380a6134c7565b5b600061381985828601613515565b925050602061382a858286016137df565b9150509250929050565b60006020828403121561384a576138496134c7565b5b6000613858848285016137df565b91505092915050565b60008060408385031215613878576138776134c7565b5b600061388685828601613515565b925050602061389785828601613515565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138e857607f821691505b602082108114156138fc576138fb6138a1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613938602083613417565b915061394382613902565b602082019050919050565b600060208201905081810360008301526139678161392b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139a88261352a565b91506139b38361352a565b9250828210156139c6576139c561396e565b5b828203905092915050565b60006139dc8261352a565b91506139e78361352a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a1c57613a1b61396e565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a83602883613417565b9150613a8e82613a27565b604082019050919050565b60006020820190508181036000830152613ab281613a76565b9050919050565b7f43616e277420696e637265617365206275792074617800000000000000000000600082015250565b6000613aef601683613417565b9150613afa82613ab9565b602082019050919050565b60006020820190508181036000830152613b1e81613ae2565b9050919050565b7f43616e277420696e6372656173652073656c6c20746178000000000000000000600082015250565b6000613b5b601783613417565b9150613b6682613b25565b602082019050919050565b60006020820190508181036000830152613b8a81613b4e565b9050919050565b600081905092915050565b50565b6000613bac600083613b91565b9150613bb782613b9c565b600082019050919050565b6000613bcd82613b9f565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000613c0d601483613417565b9150613c1882613bd7565b602082019050919050565b60006020820190508181036000830152613c3c81613c00565b9050919050565b7f43616e277420636c61696d206d6f7265207468616e20796f757220616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613c9f602483613417565b9150613caa82613c43565b604082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b6000604082019050613cea600083018561367d565b613cf760208301846135ac565b9392505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613d5a603983613417565b9150613d6582613cfe565b604082019050919050565b60006020820190508181036000830152613d8981613d4d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613dec602583613417565b9150613df782613d90565b604082019050919050565b60006020820190508181036000830152613e1b81613ddf565b9050919050565b6000613e2d8261352a565b9150613e388361352a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e7157613e7061396e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eb68261352a565b9150613ec18361352a565b925082613ed157613ed0613e7c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613f38603583613417565b9150613f4382613edc565b604082019050919050565b60006020820190508181036000830152613f6781613f2b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613fca603483613417565b9150613fd582613f6e565b604082019050919050565b60006020820190508181036000830152613ff981613fbd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061405c602483613417565b915061406782614000565b604082019050919050565b6000602082019050818103600083015261408b8161404f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ee602283613417565b91506140f982614092565b604082019050919050565b6000602082019050818103600083015261411d816140e1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614180602583613417565b915061418b82614124565b604082019050919050565b600060208201905081810360008301526141af81614173565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614212602383613417565b915061421d826141b6565b604082019050919050565b6000602082019050818103600083015261424181614205565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061427e601683613417565b915061428982614248565b602082019050919050565b600060208201905081810360008301526142ad81614271565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614310603583613417565b915061431b826142b4565b604082019050919050565b6000602082019050818103600083015261433f81614303565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061437c601383613417565b915061438782614346565b602082019050919050565b600060208201905081810360008301526143ab8161436f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061440e603683613417565b9150614419826143b2565b604082019050919050565b6000602082019050818103600083015261443d81614401565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144a0602683613417565b91506144ab82614444565b604082019050919050565b600060208201905081810360008301526144cf81614493565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614543816134fe565b92915050565b60006020828403121561455f5761455e6134c7565b5b600061456d84828501614534565b91505092915050565b6000819050919050565b600061459b61459661459184614576565b613603565b61352a565b9050919050565b6145ab81614580565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145e6816134ec565b82525050565b60006145f883836145dd565b60208301905092915050565b6000602082019050919050565b600061461c826145b1565b61462681856145bc565b9350614631836145cd565b8060005b8381101561466257815161464988826145ec565b975061465483614604565b925050600181019050614635565b5085935050505092915050565b600060a082019050614684600083018861367d565b61469160208301876145a2565b81810360408301526146a38186614611565b90506146b26060830185613771565b6146bf608083018461367d565b969550505050505056fea2646970667358221220a0db932d0563cf1d04517344d85dcfb6805452fa556db7b8680dd6822045b45164736f6c634300080a0033
Deployed ByteCode Sourcemap
7672:12363:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2521:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3434:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8782:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11198:115;;;;;;;;;;;;;:::i;:::-;;7725:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12815:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2841:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10704:125;;;:::i;:::-;;3611:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11321:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2741:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4111:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8643:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8606:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7783:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10837:228;;;;;;;;;;;;;:::i;:::-;;8486:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8168:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8207:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14971:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8122:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12288:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8566:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2957:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;876:103;;;;;;;;;;;;;:::i;:::-;;13205:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13902:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8681:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12992:161;;;;;;;;;;;;;:::i;:::-;;11675:112;;;;;;;;;;;;;:::i;:::-;;653:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7860:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14165:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2629:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8085:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14463:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4334:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3092:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8852:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8526:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14273:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11795:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7893:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13396:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11073:117;;;;;;;;;;;;;:::i;:::-;;3275:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7935:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8260:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7975:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12073:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2521:100;2575:13;2608:5;2601:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2521:100;:::o;3434:169::-;3517:4;3534:39;3543:12;:10;:12::i;:::-;3557:7;3566:6;3534:8;:39::i;:::-;3591:4;3584:11;;3434:169;;;;:::o;8782:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;11198:115::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11273:1:::1;11255:15;:19;;;;11304:1;11285:16;:20;;;;11198:115::o:0;7725:51::-;;;:::o;12815:169::-;12888:7;12957:18;12970:4;12957:12;:18::i;:::-;12938:10;:16;12949:4;12938:16;;;;;;;;;;;;;;;;12915:14;:20;12930:4;12915:20;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;:60;;;;:::i;:::-;12908:67;;12815:169;;;:::o;2841:108::-;2902:7;2929:12;;2922:19;;2841:108;:::o;10704:125::-;10774:9;10756:14;;:27;;;;;;;:::i;:::-;;;;;;;;10820:1;10795:23;;:26;;;;;;;:::i;:::-;;;;;;;;10704:125::o;3611:492::-;3751:4;3768:36;3778:6;3786:9;3797:6;3768:9;:36::i;:::-;3817:24;3844:11;:19;3856:6;3844:19;;;;;;;;;;;;;;;:33;3864:12;:10;:12::i;:::-;3844:33;;;;;;;;;;;;;;;;3817:60;;3916:6;3896:16;:26;;3888:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4003:57;4012:6;4020:12;:10;:12::i;:::-;4053:6;4034:16;:25;4003:8;:57::i;:::-;4091:4;4084:11;;;3611:492;;;;;:::o;11321:300::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11423:15:::1;;11413:6;:25;;11405:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11495:16;;11484:7;:27;;11476:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11568:6;11550:15;:24;;;;11605:7;11586:16;:26;;;;11321:300:::0;;:::o;2741:92::-;2799:5;2824:1;2817:8;;2741:92;:::o;4111:215::-;4199:4;4216:80;4225:12;:10;:12::i;:::-;4239:7;4285:10;4248:11;:25;4260:12;:10;:12::i;:::-;4248:25;;;;;;;;;;;;;;;:34;4274:7;4248:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4216:8;:80::i;:::-;4314:4;4307:11;;4111:215;;;;:::o;8643:31::-;;;;:::o;8606:30::-;;;;:::o;7783:38::-;;;:::o;10837:228::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10899:12:::1;10925:10;10917:24;;10949:21;10917:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10898:77;;;10994:7;10986:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10887:178;10837:228::o:0;8486:33::-;;;;;;;;;;;;;:::o;8168:29::-;;;;:::o;8207:45::-;;;;;;;;;;;;;;;;;:::o;14971:126::-;15037:4;15061:19;:28;15081:7;15061:28;;;;;;;;;;;;;;;;;;;;;;;;;15054:35;;14971:126;;;:::o;8122:38::-;;;;:::o;12288:454::-;12345:25;12359:10;12345:13;:25::i;:::-;12381:17;12430:10;:22;12441:10;12430:22;;;;;;;;;;;;;;;;12401:14;:26;12416:10;12401:26;;;;;;;;;;;;;;;;:51;;;;:::i;:::-;12381:71;;12479:9;12472:3;:16;;12464:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12567:3;12541:10;:22;12552:10;12541:22;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;12583:12;12609:10;12601:24;;12633:3;12601:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12582:59;;;12670:3;12652:14;;:21;;;;;;;:::i;:::-;;;;;;;;12708:10;12690:43;;;12720:3;12725:7;12690:43;;;;;;;:::i;:::-;;;;;;;;12334:408;;12288:454;:::o;8566:31::-;;;;;;;;;;;;;:::o;2957:127::-;3031:7;3058:9;:18;3068:7;3058:18;;;;;;;;;;;;;;;;3051:25;;2957:127;;;:::o;876:103::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;941:30:::1;968:1;941:18;:30::i;:::-;876:103::o:0;13205:121::-;13257:4;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13291:5:::1;13274:14;;:22;;;;;;;;;;;;;;;;;;13314:4;13307:11;;13205:121:::0;:::o;13902:167::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14057:4:::1;14015:31;:39;14047:6;14015:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13902:167:::0;;:::o;8681:33::-;;;;:::o;12992:161::-;13035:17;13084:10;:22;13095:10;13084:22;;;;;;;;;;;;;;;;13055:14;:26;13070:10;13055:26;;;;;;;;;;;;;;;;:51;;;;:::i;:::-;13035:71;;13118:27;13135:9;13118:16;:27::i;:::-;13024:129;12992:161::o;11675:112::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11746:4:::1;11730:13;;:20;;;;;;;;;;;;;;;;;;11775:4;11761:11;;:18;;;;;;;;;;;;;;;;;;11675:112::o:0;653:87::-;699:7;726:6;;;;;;;;;;;719:13;;653:87;:::o;7860:24::-;;;;;;;;;;;;;:::o;14165:100::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14250:7:::1;14236:11;;:21;;;;;;;;;;;;;;;;;;14165:100:::0;:::o;2629:104::-;2685:13;2718:7;2711:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2629:104;:::o;8085:29::-;;;;:::o;14463:304::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14607:13:::1;14599:21;;:4;:21;;;;14577:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;14718:41;14747:4;14753:5;14718:28;:41::i;:::-;14463:304:::0;;:::o;4334:413::-;4427:4;4444:24;4471:11;:25;4483:12;:10;:12::i;:::-;4471:25;;;;;;;;;;;;;;;:34;4497:7;4471:34;;;;;;;;;;;;;;;;4444:61;;4544:15;4524:16;:35;;4516:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4637:67;4646:12;:10;:12::i;:::-;4660:7;4688:15;4669:16;:34;4637:8;:67::i;:::-;4735:4;4728:11;;;4334:413;;;;:::o;3092:175::-;3178:4;3195:42;3205:12;:10;:12::i;:::-;3219:9;3230:6;3195:9;:42::i;:::-;3255:4;3248:11;;3092:175;;;;:::o;8852:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;8526:33::-;;;;;;;;;;;;;:::o;14273:182::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14389:8:::1;14358:19;:28;14378:7;14358:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14429:7;14413:34;;;14438:8;14413:34;;;;;;:::i;:::-;;;;;;;;14273:182:::0;;:::o;11795:202::-;11850:16;11869:18;11882:4;11869:12;:18::i;:::-;11850:37;;11930:14;;11898:23;:29;11922:4;11898:29;;;;;;;;;;;;;;;:46;;;;11980:8;11956:14;:20;11971:4;11956:20;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;11839:158;11795:202;:::o;7893:35::-;;;;:::o;13396:497::-;13504:4;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13583:6:::1;13578:1;13562:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13561:28;;;;:::i;:::-;13548:9;:41;;13526:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;13738:4;13733:1;13717:13;:11;:13::i;:::-;:17;;;;:::i;:::-;13716:26;;;;:::i;:::-;13703:9;:39;;13681:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;13854:9;13833:18;:30;;;;13881:4;13874:11;;13396:497:::0;;;:::o;11073:117::-;799:12;:10;:12::i;:::-;788:23;;:7;:5;:7::i;:::-;:23;;;780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11148:1:::1;11130:15;:19;;;;11179:2;11160:16;:21;;;;11073:117::o:0;3275:151::-;3364:7;3391:11;:18;3403:5;3391:18;;;;;;;;;;;;;;;:27;3410:7;3391:27;;;;;;;;;;;;;;;;3384:34;;3275:151;;;;:::o;7935:33::-;;;;:::o;8260:49::-;;;;;;;;;;;;;;;;;:::o;7975:24::-;;;;:::o;12073:207::-;12129:7;12149:15;12184:23;:29;12208:4;12184:29;;;;;;;;;;;;;;;;12167:14;;:46;;;;:::i;:::-;12149:64;;12259:13;:11;:13::i;:::-;12241:15;12251:4;12241:9;:15::i;:::-;12231:7;:25;;;;:::i;:::-;:41;;;;:::i;:::-;12224:48;;;12073:207;;;:::o;199:98::-;252:7;279:10;272:17;;199:98;:::o;6502:380::-;6655:1;6638:19;;:5;:19;;;;6630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6736:1;6717:21;;:7;:21;;;;6709:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6820:6;6790:11;:18;6802:5;6790:18;;;;;;;;;;;;;;;:27;6809:7;6790:27;;;;;;;;;;;;;;;:36;;;;6858:7;6842:32;;6851:5;6842:32;;;6867:6;6842:32;;;;;;:::i;:::-;;;;;;;;6502:380;;;:::o;15105:3612::-;15253:1;15237:18;;:4;:18;;;;15229:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15330:1;15316:16;;:2;:16;;;;15308:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15399:1;15389:6;:11;15385:93;;;15417:28;15433:4;15439:2;15443:1;15417:15;:28::i;:::-;15460:7;;15385:93;15490:19;15504:4;15490:13;:19::i;:::-;15520:17;15534:2;15520:13;:17::i;:::-;15554:14;;;;;;;;;;;15550:1694;;;15615:7;:5;:7::i;:::-;15607:15;;:4;:15;;;;:49;;;;;15649:7;:5;:7::i;:::-;15643:13;;:2;:13;;;;15607:49;:86;;;;;15691:1;15677:16;;:2;:16;;;;15607:86;:128;;;;;15728:6;15714:21;;:2;:21;;;;15607:128;:158;;;;;15757:8;;;;;;;;;;;15756:9;15607:158;15585:1648;;;15805:13;;;;;;;;;;;15800:223;;15877:19;:25;15897:4;15877:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15906:19;:23;15926:2;15906:23;;;;;;;;;;;;;;;;;;;;;;;;;15877:52;15843:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;15800:223;16097:25;:31;16123:4;16097:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;16154:31;:35;16186:2;16154:35;;;;;;;;;;;;;;;;;;;;;;;;;16153:36;16097:92;16071:1147;;;16276:20;;16266:6;:30;;16232:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;16484:9;;16467:13;16477:2;16467:9;:13::i;:::-;16458:6;:22;;;;:::i;:::-;:35;;16424:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16071:1147;;;16662:25;:29;16688:2;16662:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;16717:31;:37;16749:4;16717:37;;;;;;;;;;;;;;;;;;;;;;;;;16716:38;16662:92;16636:582;;;16841:20;;16831:6;:30;;16797:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;16636:582;;;16998:31;:35;17030:2;16998:35;;;;;;;;;;;;;;;;;;;;;;;;;16993:225;;17118:9;;17101:13;17111:2;17101:9;:13::i;:::-;17092:6;:22;;;;:::i;:::-;:35;;17058:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16993:225;16636:582;16071:1147;15585:1648;15550:1694;17256:28;17287:24;17305:4;17287:9;:24::i;:::-;17256:55;;17324:12;17363:18;;17339:20;:42;;17324:57;;17412:7;:35;;;;;17436:11;;;;;;;;;;;17412:35;:61;;;;;17465:8;;;;;;;;;;;17464:9;17412:61;:110;;;;;17491:25;:31;17517:4;17491:31;;;;;;;;;;;;;;;;;;;;;;;;;17490:32;17412:110;:153;;;;;17540:19;:25;17560:4;17540:25;;;;;;;;;;;;;;;;;;;;;;;;;17539:26;17412:153;:194;;;;;17583:19;:23;17603:2;17583:23;;;;;;;;;;;;;;;;;;;;;;;;;17582:24;17412:194;17394:326;;;17644:4;17633:8;;:15;;;;;;;;;;;;;;;;;;17665:10;:8;:10::i;:::-;17703:5;17692:8;;:16;;;;;;;;;;;;;;;;;;17394:326;17732:12;17748:8;;;;;;;;;;;17747:9;17732:24;;17858:19;:25;17878:4;17858:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17887:19;:23;17907:2;17887:23;;;;;;;;;;;;;;;;;;;;;;;;;17858:52;17854:100;;;17937:5;17927:15;;17854:100;17966:12;18071:7;18067:597;;;18123:25;:29;18149:2;18123:29;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;18175:1;18156:16;;:20;18123:53;18119:396;;;18232:3;18213:16;;18204:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;18197:38;;18276:4;18254:18;;:26;;;;;;;:::i;:::-;;;;;;;;18119:396;;;18342:25;:31;18368:4;18342:31;;;;;;;;;;;;;;;;;;;;;;;;;:54;;;;;18395:1;18377:15;;:19;18342:54;18338:177;;;18451:3;18433:15;;18424:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;18417:37;;18495:4;18473:18;;:26;;;;;;;:::i;:::-;;;;;;;;18338:177;18119:396;18542:1;18535:4;:8;18531:91;;;18564:42;18580:4;18594;18601;18564:15;:42::i;:::-;18531:91;18648:4;18638:14;;;;;:::i;:::-;;;18067:597;18676:33;18692:4;18698:2;18702:6;18676:15;:33::i;:::-;15218:3499;;;;15105:3612;;;;:::o;987:191::-;1061:16;1080:6;;;;;;;;;;;1061:25;;1106:8;1097:6;;:17;;;;;;;;;;;;;;;;;;1161:8;1130:40;;1151:8;1130:40;;;;;;;;;;;;1050:128;987:191;:::o;14775:188::-;14892:5;14858:25;:31;14884:4;14858:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14949:5;14915:40;;14943:4;14915:40;;;;;;;;;;;;14775:188;;:::o;4755:733::-;4913:1;4895:20;;:6;:20;;;;4887:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4997:1;4976:23;;:9;:23;;;;4968:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5052:47;5073:6;5081:9;5092:6;5052:20;:47::i;:::-;5112:21;5136:9;:17;5146:6;5136:17;;;;;;;;;;;;;;;;5112:41;;5189:6;5172:13;:23;;5164:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5310:6;5294:13;:22;5274:9;:17;5284:6;5274:17;;;;;;;;;;;;;;;:42;;;;5362:6;5338:9;:20;5348:9;5338:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5403:9;5386:35;;5395:6;5386:35;;;5414:6;5386:35;;;;;;:::i;:::-;;;;;;;;5434:46;5454:6;5462:9;5473:6;5434:19;:46::i;:::-;4876:612;4755:733;;;:::o;19322:708::-;19361:23;19387:24;19405:4;19387:9;:24::i;:::-;19361:50;;19422:12;19470:1;19451:15;:20;:47;;;;19497:1;19475:18;;:23;19451:47;19447:86;;;19515:7;;;;19447:86;19588:2;19567:18;;:23;;;;:::i;:::-;19549:15;:41;19545:115;;;19646:2;19625:18;;:23;;;;:::i;:::-;19607:41;;19545:115;19672:26;19701:15;19672:44;;19730:25;19758:21;19730:49;;19792:36;19809:18;19792:16;:36::i;:::-;19841:23;19891:17;19867:21;:41;;;;:::i;:::-;19841:67;;19943:1;19922:18;:22;;;;19979:9;;;;;;;;;;;19971:23;;20002:15;19971:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19957:65;;;;;19350:680;;;;;19322:708;:::o;6890:125::-;;;;:::o;7023:124::-;;;;:::o;18725:589::-;18851:21;18889:1;18875:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18851:40;;18920:4;18902;18907:1;18902:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18946:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18936:4;18941:1;18936:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18981:62;18998:4;19013:15;19031:11;18981:8;:62::i;:::-;19082:15;:66;;;19163:11;19189:1;19233:4;19260;19280:15;19082:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18780:534;18725:589;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:152::-;4251:9;4284:37;4315:5;4284:37;:::i;:::-;4271:50;;4175:152;;;:::o;4333:183::-;4446:63;4503:5;4446:63;:::i;:::-;4441:3;4434:76;4333:183;;:::o;4522:274::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:97;4786:1;4775:9;4771:17;4762:6;4692:97;:::i;:::-;4522:274;;;;:::o;4802:118::-;4889:24;4907:5;4889:24;:::i;:::-;4884:3;4877:37;4802:118;;:::o;4926:222::-;5019:4;5057:2;5046:9;5042:18;5034:26;;5070:71;5138:1;5127:9;5123:17;5114:6;5070:71;:::i;:::-;4926:222;;;;:::o;5154:619::-;5231:6;5239;5247;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5549:2;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5520:118;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5154:619;;;;;:::o;5779:474::-;5847:6;5855;5904:2;5892:9;5883:7;5879:23;5875:32;5872:119;;;5910:79;;:::i;:::-;5872:119;6030:1;6055:53;6100:7;6091:6;6080:9;6076:22;6055:53;:::i;:::-;6045:63;;6001:117;6157:2;6183:53;6228:7;6219:6;6208:9;6204:22;6183:53;:::i;:::-;6173:63;;6128:118;5779:474;;;;;:::o;6259:86::-;6294:7;6334:4;6327:5;6323:16;6312:27;;6259:86;;;:::o;6351:112::-;6434:22;6450:5;6434:22;:::i;:::-;6429:3;6422:35;6351:112;;:::o;6469:214::-;6558:4;6596:2;6585:9;6581:18;6573:26;;6609:67;6673:1;6662:9;6658:17;6649:6;6609:67;:::i;:::-;6469:214;;;;:::o;6689:118::-;6776:24;6794:5;6776:24;:::i;:::-;6771:3;6764:37;6689:118;;:::o;6813:222::-;6906:4;6944:2;6933:9;6929:18;6921:26;;6957:71;7025:1;7014:9;7010:17;7001:6;6957:71;:::i;:::-;6813:222;;;;:::o;7041:329::-;7100:6;7149:2;7137:9;7128:7;7124:23;7120:32;7117:119;;;7155:79;;:::i;:::-;7117:119;7275:1;7300:53;7345:7;7336:6;7325:9;7321:22;7300:53;:::i;:::-;7290:63;;7246:117;7041:329;;;;:::o;7376:116::-;7446:21;7461:5;7446:21;:::i;:::-;7439:5;7436:32;7426:60;;7482:1;7479;7472:12;7426:60;7376:116;:::o;7498:133::-;7541:5;7579:6;7566:20;7557:29;;7595:30;7619:5;7595:30;:::i;:::-;7498:133;;;;:::o;7637:468::-;7702:6;7710;7759:2;7747:9;7738:7;7734:23;7730:32;7727:119;;;7765:79;;:::i;:::-;7727:119;7885:1;7910:53;7955:7;7946:6;7935:9;7931:22;7910:53;:::i;:::-;7900:63;;7856:117;8012:2;8038:50;8080:7;8071:6;8060:9;8056:22;8038:50;:::i;:::-;8028:60;;7983:115;7637:468;;;;;:::o;8111:323::-;8167:6;8216:2;8204:9;8195:7;8191:23;8187:32;8184:119;;;8222:79;;:::i;:::-;8184:119;8342:1;8367:50;8409:7;8400:6;8389:9;8385:22;8367:50;:::i;:::-;8357:60;;8313:114;8111:323;;;;:::o;8440:474::-;8508:6;8516;8565:2;8553:9;8544:7;8540:23;8536:32;8533:119;;;8571:79;;:::i;:::-;8533:119;8691:1;8716:53;8761:7;8752:6;8741:9;8737:22;8716:53;:::i;:::-;8706:63;;8662:117;8818:2;8844:53;8889:7;8880:6;8869:9;8865:22;8844:53;:::i;:::-;8834:63;;8789:118;8440:474;;;;;:::o;8920:180::-;8968:77;8965:1;8958:88;9065:4;9062:1;9055:15;9089:4;9086:1;9079:15;9106:320;9150:6;9187:1;9181:4;9177:12;9167:22;;9234:1;9228:4;9224:12;9255:18;9245:81;;9311:4;9303:6;9299:17;9289:27;;9245:81;9373:2;9365:6;9362:14;9342:18;9339:38;9336:84;;;9392:18;;:::i;:::-;9336:84;9157:269;9106:320;;;:::o;9432:182::-;9572:34;9568:1;9560:6;9556:14;9549:58;9432:182;:::o;9620:366::-;9762:3;9783:67;9847:2;9842:3;9783:67;:::i;:::-;9776:74;;9859:93;9948:3;9859:93;:::i;:::-;9977:2;9972:3;9968:12;9961:19;;9620:366;;;:::o;9992:419::-;10158:4;10196:2;10185:9;10181:18;10173:26;;10245:9;10239:4;10235:20;10231:1;10220:9;10216:17;10209:47;10273:131;10399:4;10273:131;:::i;:::-;10265:139;;9992:419;;;:::o;10417:180::-;10465:77;10462:1;10455:88;10562:4;10559:1;10552:15;10586:4;10583:1;10576:15;10603:191;10643:4;10663:20;10681:1;10663:20;:::i;:::-;10658:25;;10697:20;10715:1;10697:20;:::i;:::-;10692:25;;10736:1;10733;10730:8;10727:34;;;10741:18;;:::i;:::-;10727:34;10786:1;10783;10779:9;10771:17;;10603:191;;;;:::o;10800:305::-;10840:3;10859:20;10877:1;10859:20;:::i;:::-;10854:25;;10893:20;10911:1;10893:20;:::i;:::-;10888:25;;11047:1;10979:66;10975:74;10972:1;10969:81;10966:107;;;11053:18;;:::i;:::-;10966:107;11097:1;11094;11090:9;11083:16;;10800:305;;;;:::o;11111:227::-;11251:34;11247:1;11239:6;11235:14;11228:58;11320:10;11315:2;11307:6;11303:15;11296:35;11111:227;:::o;11344:366::-;11486:3;11507:67;11571:2;11566:3;11507:67;:::i;:::-;11500:74;;11583:93;11672:3;11583:93;:::i;:::-;11701:2;11696:3;11692:12;11685:19;;11344:366;;;:::o;11716:419::-;11882:4;11920:2;11909:9;11905:18;11897:26;;11969:9;11963:4;11959:20;11955:1;11944:9;11940:17;11933:47;11997:131;12123:4;11997:131;:::i;:::-;11989:139;;11716:419;;;:::o;12141:172::-;12281:24;12277:1;12269:6;12265:14;12258:48;12141:172;:::o;12319:366::-;12461:3;12482:67;12546:2;12541:3;12482:67;:::i;:::-;12475:74;;12558:93;12647:3;12558:93;:::i;:::-;12676:2;12671:3;12667:12;12660:19;;12319:366;;;:::o;12691:419::-;12857:4;12895:2;12884:9;12880:18;12872:26;;12944:9;12938:4;12934:20;12930:1;12919:9;12915:17;12908:47;12972:131;13098:4;12972:131;:::i;:::-;12964:139;;12691:419;;;:::o;13116:173::-;13256:25;13252:1;13244:6;13240:14;13233:49;13116:173;:::o;13295:366::-;13437:3;13458:67;13522:2;13517:3;13458:67;:::i;:::-;13451:74;;13534:93;13623:3;13534:93;:::i;:::-;13652:2;13647:3;13643:12;13636:19;;13295:366;;;:::o;13667:419::-;13833:4;13871:2;13860:9;13856:18;13848:26;;13920:9;13914:4;13910:20;13906:1;13895:9;13891:17;13884:47;13948:131;14074:4;13948:131;:::i;:::-;13940:139;;13667:419;;;:::o;14092:147::-;14193:11;14230:3;14215:18;;14092:147;;;;:::o;14245:114::-;;:::o;14365:398::-;14524:3;14545:83;14626:1;14621:3;14545:83;:::i;:::-;14538:90;;14637:93;14726:3;14637:93;:::i;:::-;14755:1;14750:3;14746:11;14739:18;;14365:398;;;:::o;14769:379::-;14953:3;14975:147;15118:3;14975:147;:::i;:::-;14968:154;;15139:3;15132:10;;14769:379;;;:::o;15154:170::-;15294:22;15290:1;15282:6;15278:14;15271:46;15154:170;:::o;15330:366::-;15472:3;15493:67;15557:2;15552:3;15493:67;:::i;:::-;15486:74;;15569:93;15658:3;15569:93;:::i;:::-;15687:2;15682:3;15678:12;15671:19;;15330:366;;;:::o;15702:419::-;15868:4;15906:2;15895:9;15891:18;15883:26;;15955:9;15949:4;15945:20;15941:1;15930:9;15926:17;15919:47;15983:131;16109:4;15983:131;:::i;:::-;15975:139;;15702:419;;;:::o;16127:223::-;16267:34;16263:1;16255:6;16251:14;16244:58;16336:6;16331:2;16323:6;16319:15;16312:31;16127:223;:::o;16356:366::-;16498:3;16519:67;16583:2;16578:3;16519:67;:::i;:::-;16512:74;;16595:93;16684:3;16595:93;:::i;:::-;16713:2;16708:3;16704:12;16697:19;;16356:366;;;:::o;16728:419::-;16894:4;16932:2;16921:9;16917:18;16909:26;;16981:9;16975:4;16971:20;16967:1;16956:9;16952:17;16945:47;17009:131;17135:4;17009:131;:::i;:::-;17001:139;;16728:419;;;:::o;17153:320::-;17268:4;17306:2;17295:9;17291:18;17283:26;;17319:71;17387:1;17376:9;17372:17;17363:6;17319:71;:::i;:::-;17400:66;17462:2;17451:9;17447:18;17438:6;17400:66;:::i;:::-;17153:320;;;;;:::o;17479:244::-;17619:34;17615:1;17607:6;17603:14;17596:58;17688:27;17683:2;17675:6;17671:15;17664:52;17479:244;:::o;17729:366::-;17871:3;17892:67;17956:2;17951:3;17892:67;:::i;:::-;17885:74;;17968:93;18057:3;17968:93;:::i;:::-;18086:2;18081:3;18077:12;18070:19;;17729:366;;;:::o;18101:419::-;18267:4;18305:2;18294:9;18290:18;18282:26;;18354:9;18348:4;18344:20;18340:1;18329:9;18325:17;18318:47;18382:131;18508:4;18382:131;:::i;:::-;18374:139;;18101:419;;;:::o;18526:224::-;18666:34;18662:1;18654:6;18650:14;18643:58;18735:7;18730:2;18722:6;18718:15;18711:32;18526:224;:::o;18756:366::-;18898:3;18919:67;18983:2;18978:3;18919:67;:::i;:::-;18912:74;;18995:93;19084:3;18995:93;:::i;:::-;19113:2;19108:3;19104:12;19097:19;;18756:366;;;:::o;19128:419::-;19294:4;19332:2;19321:9;19317:18;19309:26;;19381:9;19375:4;19371:20;19367:1;19356:9;19352:17;19345:47;19409:131;19535:4;19409:131;:::i;:::-;19401:139;;19128:419;;;:::o;19553:348::-;19593:7;19616:20;19634:1;19616:20;:::i;:::-;19611:25;;19650:20;19668:1;19650:20;:::i;:::-;19645:25;;19838:1;19770:66;19766:74;19763:1;19760:81;19755:1;19748:9;19741:17;19737:105;19734:131;;;19845:18;;:::i;:::-;19734:131;19893:1;19890;19886:9;19875:20;;19553:348;;;;:::o;19907:180::-;19955:77;19952:1;19945:88;20052:4;20049:1;20042:15;20076:4;20073:1;20066:15;20093:185;20133:1;20150:20;20168:1;20150:20;:::i;:::-;20145:25;;20184:20;20202:1;20184:20;:::i;:::-;20179:25;;20223:1;20213:35;;20228:18;;:::i;:::-;20213:35;20270:1;20267;20263:9;20258:14;;20093:185;;;;:::o;20284:240::-;20424:34;20420:1;20412:6;20408:14;20401:58;20493:23;20488:2;20480:6;20476:15;20469:48;20284:240;:::o;20530:366::-;20672:3;20693:67;20757:2;20752:3;20693:67;:::i;:::-;20686:74;;20769:93;20858:3;20769:93;:::i;:::-;20887:2;20882:3;20878:12;20871:19;;20530:366;;;:::o;20902:419::-;21068:4;21106:2;21095:9;21091:18;21083:26;;21155:9;21149:4;21145:20;21141:1;21130:9;21126:17;21119:47;21183:131;21309:4;21183:131;:::i;:::-;21175:139;;20902:419;;;:::o;21327:239::-;21467:34;21463:1;21455:6;21451:14;21444:58;21536:22;21531:2;21523:6;21519:15;21512:47;21327:239;:::o;21572:366::-;21714:3;21735:67;21799:2;21794:3;21735:67;:::i;:::-;21728:74;;21811:93;21900:3;21811:93;:::i;:::-;21929:2;21924:3;21920:12;21913:19;;21572:366;;;:::o;21944:419::-;22110:4;22148:2;22137:9;22133:18;22125:26;;22197:9;22191:4;22187:20;22183:1;22172:9;22168:17;22161:47;22225:131;22351:4;22225:131;:::i;:::-;22217:139;;21944:419;;;:::o;22369:223::-;22509:34;22505:1;22497:6;22493:14;22486:58;22578:6;22573:2;22565:6;22561:15;22554:31;22369:223;:::o;22598:366::-;22740:3;22761:67;22825:2;22820:3;22761:67;:::i;:::-;22754:74;;22837:93;22926:3;22837:93;:::i;:::-;22955:2;22950:3;22946:12;22939:19;;22598:366;;;:::o;22970:419::-;23136:4;23174:2;23163:9;23159:18;23151:26;;23223:9;23217:4;23213:20;23209:1;23198:9;23194:17;23187:47;23251:131;23377:4;23251:131;:::i;:::-;23243:139;;22970:419;;;:::o;23395:221::-;23535:34;23531:1;23523:6;23519:14;23512:58;23604:4;23599:2;23591:6;23587:15;23580:29;23395:221;:::o;23622:366::-;23764:3;23785:67;23849:2;23844:3;23785:67;:::i;:::-;23778:74;;23861:93;23950:3;23861:93;:::i;:::-;23979:2;23974:3;23970:12;23963:19;;23622:366;;;:::o;23994:419::-;24160:4;24198:2;24187:9;24183:18;24175:26;;24247:9;24241:4;24237:20;24233:1;24222:9;24218:17;24211:47;24275:131;24401:4;24275:131;:::i;:::-;24267:139;;23994:419;;;:::o;24419:224::-;24559:34;24555:1;24547:6;24543:14;24536:58;24628:7;24623:2;24615:6;24611:15;24604:32;24419:224;:::o;24649:366::-;24791:3;24812:67;24876:2;24871:3;24812:67;:::i;:::-;24805:74;;24888:93;24977:3;24888:93;:::i;:::-;25006:2;25001:3;24997:12;24990:19;;24649:366;;;:::o;25021:419::-;25187:4;25225:2;25214:9;25210:18;25202:26;;25274:9;25268:4;25264:20;25260:1;25249:9;25245:17;25238:47;25302:131;25428:4;25302:131;:::i;:::-;25294:139;;25021:419;;;:::o;25446:222::-;25586:34;25582:1;25574:6;25570:14;25563:58;25655:5;25650:2;25642:6;25638:15;25631:30;25446:222;:::o;25674:366::-;25816:3;25837:67;25901:2;25896:3;25837:67;:::i;:::-;25830:74;;25913:93;26002:3;25913:93;:::i;:::-;26031:2;26026:3;26022:12;26015:19;;25674:366;;;:::o;26046:419::-;26212:4;26250:2;26239:9;26235:18;26227:26;;26299:9;26293:4;26289:20;26285:1;26274:9;26270:17;26263:47;26327:131;26453:4;26327:131;:::i;:::-;26319:139;;26046:419;;;:::o;26471:172::-;26611:24;26607:1;26599:6;26595:14;26588:48;26471:172;:::o;26649:366::-;26791:3;26812:67;26876:2;26871:3;26812:67;:::i;:::-;26805:74;;26888:93;26977:3;26888:93;:::i;:::-;27006:2;27001:3;26997:12;26990:19;;26649:366;;;:::o;27021:419::-;27187:4;27225:2;27214:9;27210:18;27202:26;;27274:9;27268:4;27264:20;27260:1;27249:9;27245:17;27238:47;27302:131;27428:4;27302:131;:::i;:::-;27294:139;;27021:419;;;:::o;27446:240::-;27586:34;27582:1;27574:6;27570:14;27563:58;27655:23;27650:2;27642:6;27638:15;27631:48;27446:240;:::o;27692:366::-;27834:3;27855:67;27919:2;27914:3;27855:67;:::i;:::-;27848:74;;27931:93;28020:3;27931:93;:::i;:::-;28049:2;28044:3;28040:12;28033:19;;27692:366;;;:::o;28064:419::-;28230:4;28268:2;28257:9;28253:18;28245:26;;28317:9;28311:4;28307:20;28303:1;28292:9;28288:17;28281:47;28345:131;28471:4;28345:131;:::i;:::-;28337:139;;28064:419;;;:::o;28489:169::-;28629:21;28625:1;28617:6;28613:14;28606:45;28489:169;:::o;28664:366::-;28806:3;28827:67;28891:2;28886:3;28827:67;:::i;:::-;28820:74;;28903:93;28992:3;28903:93;:::i;:::-;29021:2;29016:3;29012:12;29005:19;;28664:366;;;:::o;29036:419::-;29202:4;29240:2;29229:9;29225:18;29217:26;;29289:9;29283:4;29279:20;29275:1;29264:9;29260:17;29253:47;29317:131;29443:4;29317:131;:::i;:::-;29309:139;;29036:419;;;:::o;29461:241::-;29601:34;29597:1;29589:6;29585:14;29578:58;29670:24;29665:2;29657:6;29653:15;29646:49;29461:241;:::o;29708:366::-;29850:3;29871:67;29935:2;29930:3;29871:67;:::i;:::-;29864:74;;29947:93;30036:3;29947:93;:::i;:::-;30065:2;30060:3;30056:12;30049:19;;29708:366;;;:::o;30080:419::-;30246:4;30284:2;30273:9;30269:18;30261:26;;30333:9;30327:4;30323:20;30319:1;30308:9;30304:17;30297:47;30361:131;30487:4;30361:131;:::i;:::-;30353:139;;30080:419;;;:::o;30505:225::-;30645:34;30641:1;30633:6;30629:14;30622:58;30714:8;30709:2;30701:6;30697:15;30690:33;30505:225;:::o;30736:366::-;30878:3;30899:67;30963:2;30958:3;30899:67;:::i;:::-;30892:74;;30975:93;31064:3;30975:93;:::i;:::-;31093:2;31088:3;31084:12;31077:19;;30736:366;;;:::o;31108:419::-;31274:4;31312:2;31301:9;31297:18;31289:26;;31361:9;31355:4;31351:20;31347:1;31336:9;31332:17;31325:47;31389:131;31515:4;31389:131;:::i;:::-;31381:139;;31108:419;;;:::o;31533:180::-;31581:77;31578:1;31571:88;31678:4;31675:1;31668:15;31702:4;31699:1;31692:15;31719:180;31767:77;31764:1;31757:88;31864:4;31861:1;31854:15;31888:4;31885:1;31878:15;31905:143;31962:5;31993:6;31987:13;31978:22;;32009:33;32036:5;32009:33;:::i;:::-;31905:143;;;;:::o;32054:351::-;32124:6;32173:2;32161:9;32152:7;32148:23;32144:32;32141:119;;;32179:79;;:::i;:::-;32141:119;32299:1;32324:64;32380:7;32371:6;32360:9;32356:22;32324:64;:::i;:::-;32314:74;;32270:128;32054:351;;;;:::o;32411:85::-;32456:7;32485:5;32474:16;;32411:85;;;:::o;32502:158::-;32560:9;32593:61;32611:42;32620:32;32646:5;32620:32;:::i;:::-;32611:42;:::i;:::-;32593:61;:::i;:::-;32580:74;;32502:158;;;:::o;32666:147::-;32761:45;32800:5;32761:45;:::i;:::-;32756:3;32749:58;32666:147;;:::o;32819:114::-;32886:6;32920:5;32914:12;32904:22;;32819:114;;;:::o;32939:184::-;33038:11;33072:6;33067:3;33060:19;33112:4;33107:3;33103:14;33088:29;;32939:184;;;;:::o;33129:132::-;33196:4;33219:3;33211:11;;33249:4;33244:3;33240:14;33232:22;;33129:132;;;:::o;33267:108::-;33344:24;33362:5;33344:24;:::i;:::-;33339:3;33332:37;33267:108;;:::o;33381:179::-;33450:10;33471:46;33513:3;33505:6;33471:46;:::i;:::-;33549:4;33544:3;33540:14;33526:28;;33381:179;;;;:::o;33566:113::-;33636:4;33668;33663:3;33659:14;33651:22;;33566:113;;;:::o;33715:732::-;33834:3;33863:54;33911:5;33863:54;:::i;:::-;33933:86;34012:6;34007:3;33933:86;:::i;:::-;33926:93;;34043:56;34093:5;34043:56;:::i;:::-;34122:7;34153:1;34138:284;34163:6;34160:1;34157:13;34138:284;;;34239:6;34233:13;34266:63;34325:3;34310:13;34266:63;:::i;:::-;34259:70;;34352:60;34405:6;34352:60;:::i;:::-;34342:70;;34198:224;34185:1;34182;34178:9;34173:14;;34138:284;;;34142:14;34438:3;34431:10;;33839:608;;;33715:732;;;;:::o;34453:831::-;34716:4;34754:3;34743:9;34739:19;34731:27;;34768:71;34836:1;34825:9;34821:17;34812:6;34768:71;:::i;:::-;34849:80;34925:2;34914:9;34910:18;34901:6;34849:80;:::i;:::-;34976:9;34970:4;34966:20;34961:2;34950:9;34946:18;34939:48;35004:108;35107:4;35098:6;35004:108;:::i;:::-;34996:116;;35122:72;35190:2;35179:9;35175:18;35166:6;35122:72;:::i;:::-;35204:73;35272:3;35261:9;35257:19;35248:6;35204:73;:::i;:::-;34453:831;;;;;;;;:::o
Metadata Hash
ipfs://a0db932d0563cf1d04517344d85dcfb6805452fa556db7b8680dd6822045b451