ERC-20
Overview
Max Total Supply
100,000,000,000 SQUARE
Holders
128
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
92,999,999.070000003 SQUAREValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SquareDAO
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-08 */ /*************************************************************************** SquareDAO Art https://squaredao.art ****************************************************************************/ pragma solidity ^0.8.7; // SPDX-License-Identifier: Unlicensed abstract contract Withdrawable { address internal _withdrawAddress; constructor(address withdrawAddress__) { _withdrawAddress = withdrawAddress__; } modifier onlyWithdrawer() { require(msg.sender == _withdrawAddress); _; } function withdraw() external onlyWithdrawer { _withdraw(); } function _withdraw() internal { payable(_withdrawAddress).transfer(address(this).balance); } function setWithdrawAddress(address newWithdrawAddress) external onlyWithdrawer { _withdrawAddress = newWithdrawAddress; } function withdrawAddress() external view returns (address) { return _withdrawAddress; } } abstract contract Ownable { address _owner; modifier onlyOwner() { require(msg.sender == _owner); _; } constructor() { _owner = msg.sender; } function transferOwnership(address newOwner) external onlyOwner { _owner = newOwner; } function owner() external view returns (address) { return _owner; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract DoubleSwapped { bool internal _inSwap; modifier lockTheSwap() { _inSwap = true; _; _inSwap = false; } function _swapTokensForEth( uint256 tokenAmount, IUniswapV2Router02 _uniswapV2Router ) internal lockTheSwap { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); // make the swap //console.log("doubleSwap ", tokenAmount); _uniswapV2Router.swapExactTokensForETH( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); } function _swapTokensForEthOnTransfer( uint256 transferAmount, uint256 swapCount, IUniswapV2Router02 _uniswapV2Router ) internal { if (swapCount == 0) return; uint256 maxSwapCount = 2 * transferAmount; if (swapCount > maxSwapCount) swapCount = maxSwapCount; _swapTokensForEth(swapCount, _uniswapV2Router); } } 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 ); } abstract contract ERC20 is IERC20 { uint256 internal _totalSupply = 1e20; uint8 constant _decimals = 9; string _name; string _symbol; mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 internal constant INFINITY_ALLOWANCE = 2**256 - 1; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory) { return _symbol; } function decimals() external pure returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address account) external virtual override view returns (uint256); function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { uint256 senderBalance = _balances[from]; require(senderBalance >= amount); unchecked { _balances[from] = senderBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve( address owner, address spender, uint256 amount ) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount); if (currentAllowance == INFINITY_ALLOWANCE) return true; unchecked { _approve(sender, msg.sender, currentAllowance - amount); } return true; } function _burn(address account, uint256 amount) internal virtual { require(account != address(0)); uint256 accountBalance = _balances[account]; require(accountBalance >= amount); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); } } abstract contract MaxWalletDynamic { uint256 startMaxWallet; uint256 startTime; // last increment time uint256 constant startMaxBuyPercentil = 5; // maximum buy on start 1000=100% uint256 constant maxBuyIncrementMinutesTimer = 2; // increment maxbuy minutes uint256 constant maxBuyIncrementPercentil = 3; // increment maxbyu percentil 1000=100% uint256 constant maxIncrements = 1000; // maximum time incrementations uint256 maxBuyIncrementValue; // value for increment maxBuy function startMaxWalletDynamic(uint256 totalSupply) internal { startTime = block.timestamp; startMaxWallet = (totalSupply * startMaxBuyPercentil) / 1000; maxBuyIncrementValue = (totalSupply * maxBuyIncrementPercentil) / 1000; } function checkMaxWallet(uint256 walletSize) internal view { require(walletSize <= getMaxWallet(), "max wallet limit"); } function getMaxWallet() public view returns (uint256) { uint256 incrementCount = (block.timestamp - startTime) / (maxBuyIncrementMinutesTimer * 1 minutes); if (incrementCount >= maxIncrements) incrementCount = maxIncrements; return startMaxWallet + maxBuyIncrementValue * incrementCount; } function _setStartMaxWallet(uint256 startMaxWallet_) internal { startMaxWallet = startMaxWallet_; } } abstract contract TradableErc20 is ERC20, DoubleSwapped, Ownable, Withdrawable { IUniswapV2Router02 internal constant _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public uniswapPair; bool public buyEnable = true; address private ADDR_BURN = 0x000000000000000000000000000000000000dEaD; address public extraAddress; mapping(address => bool) _isExcludedFromFee; uint256 public buyFeePpm = 70; // fee in 1/1000 uint256 public sellFeePpm = 75; // fee in 1/1000 uint256 public thisShare = 1000; // in 1/1000 uint256 public extraShare = 0; // in 1/1000 uint256 maxWalletStart = 5e16; uint256 addMaxWalletPerMinute = 5e16; uint256 tradingStartTime; constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) Withdrawable(0x15B35B2261FeFA206a7112FE97de2754585Ac3BC) { _isExcludedFromFee[address(0)] = true; _isExcludedFromFee[ADDR_BURN] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[msg.sender] = true; ADDR_BURN = address(this); } receive() external payable {} function maxWallet() public view returns (uint256) { if (tradingStartTime == 0) return _totalSupply; uint256 res = maxWalletStart + ((block.timestamp - tradingStartTime) * addMaxWalletPerMinute) / (1 minutes); if (res > _totalSupply) return _totalSupply; return res; } function createLiquidity() public onlyOwner { require(uniswapPair == address(0)); address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); uint256 initialLiquidity = getSupplyForMakeLiquidity(); _balances[address(this)] = initialLiquidity; emit Transfer(address(0), address(this), initialLiquidity); _balances[msg.sender] = 1e19; emit Transfer(address(0), msg.sender, initialLiquidity); _allowances[address(this)][ address(_uniswapV2Router) ] = INFINITY_ALLOWANCE; _isExcludedFromFee[pair] = true; _uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), initialLiquidity, 0, 0, msg.sender, block.timestamp ); uniswapPair = pair; tradingStartTime = block.timestamp; } function _transfer( address from, address to, uint256 amount ) internal override { require(_balances[from] >= amount, "not enough token for transfer"); require(to != address(0), "incorrect address"); // buy if (from == uniswapPair && !_isExcludedFromFee[to]) { require(buyEnable, "trading disabled"); // get taxes amount = _getFeeBuy(from, to, amount); require( _balances[to] + amount <= maxWallet(), "max wallet constraint" ); } // sell else if ( !_inSwap && uniswapPair != address(0) && to == uniswapPair && !_isExcludedFromFee[from] ) { // fee amount = _getFeeSell(from, amount); // swap tokens _swapTokensForEthOnTransfer( amount, _balances[address(this)], _uniswapV2Router ); } // transfer super._transfer(from, to, amount); } function getFeeBuy(address account, uint256 amount) public view returns (uint256) { return (amount * buyFeePpm) / 1000; } function getFeeSell(address account, uint256 amount) public view returns (uint256) { return (amount * sellFeePpm) / 1000; } function setBuyFee(uint256 newBuyFeePpm) external onlyWithdrawer { require(newBuyFeePpm <= 200); buyFeePpm = newBuyFeePpm; } function setSellFee(uint256 newSellFeePpm) external onlyWithdrawer { require(newSellFeePpm <= 200); sellFeePpm = newSellFeePpm; } function SetExtraContractAddress(address newExtraContractAddress) external onlyWithdrawer { extraAddress = newExtraContractAddress; } function removeExtraContractAddress() external onlyWithdrawer { extraAddress = address(0); } function setShare(uint256 thisSharePpm, uint256 stackingSharePpm) external onlyWithdrawer { thisShare = thisSharePpm; extraShare = stackingSharePpm; require(thisShare + extraShare <= 1000); } function _getFeeBuy( address pair, address to, uint256 amount ) private returns (uint256) { return _arrangeFee(pair, amount, getFeeBuy(to, amount)); } function _getFeeSell(address from, uint256 amount) private returns (uint256) { return _arrangeFee(from, amount, getFeeSell(from, amount)); } function _arrangeFee( address from, uint256 amount, uint256 fee ) private returns (uint256) { uint256 thisFee = (fee * thisShare) / 1000; uint256 stacking = 0; if (extraAddress != address(0)) stacking = (fee * extraShare) / 1000; uint256 burn = 0; if (thisShare + extraShare < 1000) burn = fee - thisFee - stacking; amount -= fee; _balances[from] -= fee; if (thisFee > 0) { _balances[address(this)] += thisFee; emit Transfer(from, address(this), thisFee); } if (stacking > 0) { _balances[extraAddress] += stacking; emit Transfer(from, extraAddress, stacking); } if (burn > 0) { _balances[ADDR_BURN] += burn; emit Transfer(from, ADDR_BURN, burn); } return amount; } function setExcludeFromFee(address[] memory accounts, bool value) external onlyWithdrawer { for (uint256 i = 0; i < accounts.length; ++i) { _isExcludedFromFee[accounts[i]] = value; } } function setEnableBuy(bool value) external onlyOwner { buyEnable = value; } function getSupplyForMakeLiquidity() internal virtual returns (uint256); } struct AirdropData { address acc; uint256 count; } contract SquareDAO is TradableErc20 { constructor() TradableErc20("Square DAO", "SQUARE") {} function getSupplyForMakeLiquidity() internal view override returns (uint256) { return _totalSupply - 1e19; } function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } }
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":"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":"newExtraContractAddress","type":"address"}],"name":"SetExtraContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"extraAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeExtraContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFeePpm","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setEnableBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellFeePpm","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thisSharePpm","type":"uint256"},{"internalType":"uint256","name":"stackingSharePpm","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWithdrawAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405268056bc75e2d631000006000556001600760146101000a81548160ff02191690831515021790555061dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506046600b55604b600c556103e8600d556000600e5566b1a2bc2ec50000600f5566b1a2bc2ec50000601055348015620000a757600080fd5b506040518060400160405280600a81526020017f5371756172652044414f000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53515541524500000000000000000000000000000000000000000000000000008152507315b35b2261fefa206a7112fe97de2754585ac3bc828281600190816200013c919062000619565b5080600290816200014e919062000619565b50505033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555030600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000700565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200042157607f821691505b602082108103620004375762000436620003d9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000462565b620004ad868362000462565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004fa620004f4620004ee84620004c5565b620004cf565b620004c5565b9050919050565b6000819050919050565b6200051683620004d9565b6200052e620005258262000501565b8484546200046f565b825550505050565b600090565b6200054562000536565b620005528184846200050b565b505050565b5b818110156200057a576200056e6000826200053b565b60018101905062000558565b5050565b601f821115620005c95762000593816200043d565b6200059e8462000452565b81016020851015620005ae578190505b620005c6620005bd8562000452565b83018262000557565b50505b505050565b600082821c905092915050565b6000620005ee60001984600802620005ce565b1980831691505092915050565b6000620006098383620005db565b9150826002028217905092915050565b62000624826200039f565b67ffffffffffffffff81111562000640576200063f620003aa565b5b6200064c825462000408565b620006598282856200057e565b600060209050601f8311600181146200069157600084156200067c578287015190505b620006888582620005fb565b865550620006f8565b601f198416620006a1866200043d565b60005b82811015620006cb57848901518255600182019150602085019450602081019050620006a4565b86831015620006eb5784890151620006e7601f891682620005db565b8355505b6001600288020188555050505b505050505050565b61313e80620007106000396000f3fe6080604052600436106101e75760003560e01c80636c90b57f11610102578063c7af2a9c11610095578063f1153e6411610064578063f1153e64146106c9578063f2fde38b146106f4578063f8b45b051461071d578063f95fa9cf14610748576101ee565b8063c7af2a9c1461061f578063c816841b14610636578063d57038e114610661578063dd62ed3e1461068c576101ee565b806395d89b41116100d157806395d89b4114610563578063a9059cbb1461058e578063c4b44a40146105cb578063c6510557146105f6576101ee565b80636c90b57f146104a957806370a08231146104d25780638b4cee081461050f5780638da5cb5b14610538576101ee565b80632b96ddbe1161017a5780633ccfd60b116101495780633ccfd60b146104155780633d389faf1461042c57806347fd4ab3146104575780636bf8e9cc14610480576101ee565b80632b96ddbe1461037f5780632d36b92b14610396578063313ce567146103c15780633ab1a494146103ec576101ee565b806318160ddd116101b657806318160ddd146102af5780631a795197146102da5780631d55009a1461031757806323b872dd14610342576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630cc835a31461025b5780631581b60014610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612588565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612652565b610817565b60405161025291906126ad565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906126c8565b61082e565b005b34801561029057600080fd5b506102996108a0565b6040516102a69190612704565b60405180910390f35b3480156102bb57600080fd5b506102c46108ca565b6040516102d1919061272e565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190612652565b6108d3565b60405161030e919061272e565b60405180910390f35b34801561032357600080fd5b5061032c6108f8565b604051610339919061272e565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190612749565b6108fe565b60405161037691906126ad565b60405180910390f35b34801561038b57600080fd5b506103946109e4565b005b3480156103a257600080fd5b506103ab610a82565b6040516103b89190612704565b60405180910390f35b3480156103cd57600080fd5b506103d6610aa8565b6040516103e391906127b8565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e91906127d3565b610ab1565b005b34801561042157600080fd5b5061042a610b4f565b005b34801561043857600080fd5b50610441610bb3565b60405161044e91906126ad565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061282c565b610bc6565b005b34801561048c57600080fd5b506104a760048036038101906104a29190612859565b610c3d565b005b3480156104b557600080fd5b506104d060048036038101906104cb91906129e1565b610cc7565b005b3480156104de57600080fd5b506104f960048036038101906104f491906127d3565b610db4565b604051610506919061272e565b60405180910390f35b34801561051b57600080fd5b50610536600480360381019061053191906126c8565b610dfd565b005b34801561054457600080fd5b5061054d610e6f565b60405161055a9190612704565b60405180910390f35b34801561056f57600080fd5b50610578610e99565b6040516105859190612588565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612652565b610f2b565b6040516105c291906126ad565b60405180910390f35b3480156105d757600080fd5b506105e0610f42565b6040516105ed919061272e565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906127d3565b610f48565b005b34801561062b57600080fd5b50610634610fe6565b005b34801561064257600080fd5b5061064b611581565b6040516106589190612704565b60405180910390f35b34801561066d57600080fd5b506106766115a7565b604051610683919061272e565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae9190612a3d565b6115ad565b6040516106c0919061272e565b60405180910390f35b3480156106d557600080fd5b506106de611634565b6040516106eb919061272e565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906127d3565b61163a565b005b34801561072957600080fd5b506107326116d8565b60405161073f919061272e565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a9190612652565b611742565b60405161077c919061272e565b60405180910390f35b60606001805461079490612aac565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090612aac565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611767565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088857600080fd5b60c881111561089657600080fd5b80600b8190555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054905090565b60006103e8600c54836108e69190612b0c565b6108f09190612b95565b905092915050565b600d5481565b600061090b848484611852565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561099957600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81036109ca5760019150506109dd565b6109d78533858403611767565b60019150505b9392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a3e57600080fd5b6000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0b57600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba957600080fd5b610bb1611c80565b565b600760149054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2057600080fd5b80600760146101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9757600080fd5b81600d8190555080600e819055506103e8600e54600d54610cb89190612bc6565b1115610cc357600080fd5b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d2157600080fd5b60005b8251811015610daf5781600a6000858481518110610d4557610d44612c1c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610da890612c4b565b9050610d24565b505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5757600080fd5b60c8811115610e6557600080fd5b80600c8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ea890612aac565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed490612aac565b8015610f215780601f10610ef657610100808354040283529160200191610f21565b820191906000526020600020905b815481529060010190602001808311610f0457829003601f168201915b5050505050905090565b6000610f38338484611852565b6001905092915050565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa257600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461104057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b57600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111209190612ca8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190612ca8565b6040518363ffffffff1660e01b81526004016111dc929190612cd5565b6020604051808303816000875af11580156111fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190612ca8565b9050600061122b611ceb565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112cf919061272e565b60405180910390a3678ac7230489e80000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611381919061272e565b60405180910390a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71947308460008033426040518863ffffffff1660e01b81526004016114ef96959493929190612d43565b60606040518083038185885af115801561150d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115329190612db9565b50505081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426011819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461169457600080fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601154036116ed57600054905061173f565b6000603c601054601154426117029190612e0c565b61170c9190612b0c565b6117169190612b95565b600f546117239190612bc6565b905060005481111561173a5760005491505061173f565b809150505b90565b60006103e8600b54836117559190612b0c565b61175f9190612b95565b905092915050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611845919061272e565b60405180910390a3505050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90612e8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90612ef8565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119ea5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae457600760149054906101000a900460ff16611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590612f64565b60405180910390fd5b611a49838383611d08565b9050611a536116d8565b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9e9190612bc6565b1115611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690612fd0565b60405180910390fd5b611c70565b600560009054906101000a900460ff16158015611b505750600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015611bff5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6f57611c0e8382611d27565b9050611c6e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054737a250d5630b4cf539739df2c5dacb4c659f2488d611d45565b5b5b611c7b838383611d7c565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611ce8573d6000803e3d6000fd5b50565b6000678ac7230489e80000600054611d039190612e0c565b905090565b6000611d1e8483611d198686611742565b611ed4565b90509392505050565b6000611d3d8383611d3886866108d3565b611ed4565b905092915050565b6000820315611d77576000836002611d5d9190612b0c565b905080831115611d6b578092505b611d7583836122e6565b505b505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611dcd57600080fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190612bc6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ec6919061272e565b60405180910390a350505050565b6000806103e8600d5484611ee89190612b0c565b611ef29190612b95565b905060008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f69576103e8600e5485611f5c9190612b0c565b611f669190612b95565b90505b60006103e8600e54600d54611f7e9190612bc6565b1015611f9e57818386611f919190612e0c565b611f9b9190612e0c565b90505b8486611faa9190612e0c565b955084600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ffb9190612e0c565b9250508190555060008311156120c75782600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461205a9190612bc6565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120be919061272e565b60405180910390a35b60008211156121d0578160036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121419190612bc6565b92505081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121c7919061272e565b60405180910390a35b60008111156122d9578060036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461224a9190612bc6565b92505081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122d0919061272e565b60405180910390a35b8593505050509392505050565b6001600560006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561231e5761231d61289e565b5b60405190808252806020026020018201604052801561234c5781602001602082028036833780820191505090505b509050308160008151811061236457612363612c1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240d9190612ca8565b8160018151811061242157612420612c1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166318cbafe58460008430426040518663ffffffff1660e01b815260040161249d9594939291906130ae565b600060405180830381600087803b1580156124b757600080fd5b505af11580156124cb573d6000803e3d6000fd5b50505050506000600560006101000a81548160ff0219169083151502179055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252957808201518184015260208101905061250e565b83811115612538576000848401525b50505050565b6000601f19601f8301169050919050565b600061255a826124ef565b61256481856124fa565b935061257481856020860161250b565b61257d8161253e565b840191505092915050565b600060208201905081810360008301526125a2818461254f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125e9826125be565b9050919050565b6125f9816125de565b811461260457600080fd5b50565b600081359050612616816125f0565b92915050565b6000819050919050565b61262f8161261c565b811461263a57600080fd5b50565b60008135905061264c81612626565b92915050565b60008060408385031215612669576126686125b4565b5b600061267785828601612607565b92505060206126888582860161263d565b9150509250929050565b60008115159050919050565b6126a781612692565b82525050565b60006020820190506126c2600083018461269e565b92915050565b6000602082840312156126de576126dd6125b4565b5b60006126ec8482850161263d565b91505092915050565b6126fe816125de565b82525050565b600060208201905061271960008301846126f5565b92915050565b6127288161261c565b82525050565b6000602082019050612743600083018461271f565b92915050565b600080600060608486031215612762576127616125b4565b5b600061277086828701612607565b935050602061278186828701612607565b92505060406127928682870161263d565b9150509250925092565b600060ff82169050919050565b6127b28161279c565b82525050565b60006020820190506127cd60008301846127a9565b92915050565b6000602082840312156127e9576127e86125b4565b5b60006127f784828501612607565b91505092915050565b61280981612692565b811461281457600080fd5b50565b60008135905061282681612800565b92915050565b600060208284031215612842576128416125b4565b5b600061285084828501612817565b91505092915050565b600080604083850312156128705761286f6125b4565b5b600061287e8582860161263d565b925050602061288f8582860161263d565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128d68261253e565b810181811067ffffffffffffffff821117156128f5576128f461289e565b5b80604052505050565b60006129086125aa565b905061291482826128cd565b919050565b600067ffffffffffffffff8211156129345761293361289e565b5b602082029050602081019050919050565b600080fd5b600061295d61295884612919565b6128fe565b905080838252602082019050602084028301858111156129805761297f612945565b5b835b818110156129a957806129958882612607565b845260208401935050602081019050612982565b5050509392505050565b600082601f8301126129c8576129c7612899565b5b81356129d884826020860161294a565b91505092915050565b600080604083850312156129f8576129f76125b4565b5b600083013567ffffffffffffffff811115612a1657612a156125b9565b5b612a22858286016129b3565b9250506020612a3385828601612817565b9150509250929050565b60008060408385031215612a5457612a536125b4565b5b6000612a6285828601612607565b9250506020612a7385828601612607565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ac457607f821691505b602082108103612ad757612ad6612a7d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b178261261c565b9150612b228361261c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b5b57612b5a612add565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ba08261261c565b9150612bab8361261c565b925082612bbb57612bba612b66565b5b828204905092915050565b6000612bd18261261c565b9150612bdc8361261c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c1157612c10612add565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612c568261261c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c8857612c87612add565b5b600182019050919050565b600081519050612ca2816125f0565b92915050565b600060208284031215612cbe57612cbd6125b4565b5b6000612ccc84828501612c93565b91505092915050565b6000604082019050612cea60008301856126f5565b612cf760208301846126f5565b9392505050565b6000819050919050565b6000819050919050565b6000612d2d612d28612d2384612cfe565b612d08565b61261c565b9050919050565b612d3d81612d12565b82525050565b600060c082019050612d5860008301896126f5565b612d65602083018861271f565b612d726040830187612d34565b612d7f6060830186612d34565b612d8c60808301856126f5565b612d9960a083018461271f565b979650505050505050565b600081519050612db381612626565b92915050565b600080600060608486031215612dd257612dd16125b4565b5b6000612de086828701612da4565b9350506020612df186828701612da4565b9250506040612e0286828701612da4565b9150509250925092565b6000612e178261261c565b9150612e228361261c565b925082821015612e3557612e34612add565b5b828203905092915050565b7f6e6f7420656e6f75676820746f6b656e20666f72207472616e73666572000000600082015250565b6000612e76601d836124fa565b9150612e8182612e40565b602082019050919050565b60006020820190508181036000830152612ea581612e69565b9050919050565b7f696e636f72726563742061646472657373000000000000000000000000000000600082015250565b6000612ee26011836124fa565b9150612eed82612eac565b602082019050919050565b60006020820190508181036000830152612f1181612ed5565b9050919050565b7f74726164696e672064697361626c656400000000000000000000000000000000600082015250565b6000612f4e6010836124fa565b9150612f5982612f18565b602082019050919050565b60006020820190508181036000830152612f7d81612f41565b9050919050565b7f6d61782077616c6c657420636f6e73747261696e740000000000000000000000600082015250565b6000612fba6015836124fa565b9150612fc582612f84565b602082019050919050565b60006020820190508181036000830152612fe981612fad565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613025816125de565b82525050565b6000613037838361301c565b60208301905092915050565b6000602082019050919050565b600061305b82612ff0565b6130658185612ffb565b93506130708361300c565b8060005b838110156130a1578151613088888261302b565b975061309383613043565b925050600181019050613074565b5085935050505092915050565b600060a0820190506130c3600083018861271f565b6130d06020830187612d34565b81810360408301526130e28186613050565b90506130f160608301856126f5565b6130fe608083018461271f565b969550505050505056fea264697066735822122087c2da39c0c05383f6704b51eb317163a769dfbf40532844c7ed5721dc002bad64736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c80636c90b57f11610102578063c7af2a9c11610095578063f1153e6411610064578063f1153e64146106c9578063f2fde38b146106f4578063f8b45b051461071d578063f95fa9cf14610748576101ee565b8063c7af2a9c1461061f578063c816841b14610636578063d57038e114610661578063dd62ed3e1461068c576101ee565b806395d89b41116100d157806395d89b4114610563578063a9059cbb1461058e578063c4b44a40146105cb578063c6510557146105f6576101ee565b80636c90b57f146104a957806370a08231146104d25780638b4cee081461050f5780638da5cb5b14610538576101ee565b80632b96ddbe1161017a5780633ccfd60b116101495780633ccfd60b146104155780633d389faf1461042c57806347fd4ab3146104575780636bf8e9cc14610480576101ee565b80632b96ddbe1461037f5780632d36b92b14610396578063313ce567146103c15780633ab1a494146103ec576101ee565b806318160ddd116101b657806318160ddd146102af5780631a795197146102da5780631d55009a1461031757806323b872dd14610342576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630cc835a31461025b5780631581b60014610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612588565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612652565b610817565b60405161025291906126ad565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906126c8565b61082e565b005b34801561029057600080fd5b506102996108a0565b6040516102a69190612704565b60405180910390f35b3480156102bb57600080fd5b506102c46108ca565b6040516102d1919061272e565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190612652565b6108d3565b60405161030e919061272e565b60405180910390f35b34801561032357600080fd5b5061032c6108f8565b604051610339919061272e565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190612749565b6108fe565b60405161037691906126ad565b60405180910390f35b34801561038b57600080fd5b506103946109e4565b005b3480156103a257600080fd5b506103ab610a82565b6040516103b89190612704565b60405180910390f35b3480156103cd57600080fd5b506103d6610aa8565b6040516103e391906127b8565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e91906127d3565b610ab1565b005b34801561042157600080fd5b5061042a610b4f565b005b34801561043857600080fd5b50610441610bb3565b60405161044e91906126ad565b60405180910390f35b34801561046357600080fd5b5061047e6004803603810190610479919061282c565b610bc6565b005b34801561048c57600080fd5b506104a760048036038101906104a29190612859565b610c3d565b005b3480156104b557600080fd5b506104d060048036038101906104cb91906129e1565b610cc7565b005b3480156104de57600080fd5b506104f960048036038101906104f491906127d3565b610db4565b604051610506919061272e565b60405180910390f35b34801561051b57600080fd5b50610536600480360381019061053191906126c8565b610dfd565b005b34801561054457600080fd5b5061054d610e6f565b60405161055a9190612704565b60405180910390f35b34801561056f57600080fd5b50610578610e99565b6040516105859190612588565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612652565b610f2b565b6040516105c291906126ad565b60405180910390f35b3480156105d757600080fd5b506105e0610f42565b6040516105ed919061272e565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906127d3565b610f48565b005b34801561062b57600080fd5b50610634610fe6565b005b34801561064257600080fd5b5061064b611581565b6040516106589190612704565b60405180910390f35b34801561066d57600080fd5b506106766115a7565b604051610683919061272e565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae9190612a3d565b6115ad565b6040516106c0919061272e565b60405180910390f35b3480156106d557600080fd5b506106de611634565b6040516106eb919061272e565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906127d3565b61163a565b005b34801561072957600080fd5b506107326116d8565b60405161073f919061272e565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a9190612652565b611742565b60405161077c919061272e565b60405180910390f35b60606001805461079490612aac565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090612aac565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611767565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088857600080fd5b60c881111561089657600080fd5b80600b8190555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054905090565b60006103e8600c54836108e69190612b0c565b6108f09190612b95565b905092915050565b600d5481565b600061090b848484611852565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561099957600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81036109ca5760019150506109dd565b6109d78533858403611767565b60019150505b9392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a3e57600080fd5b6000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0b57600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba957600080fd5b610bb1611c80565b565b600760149054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2057600080fd5b80600760146101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9757600080fd5b81600d8190555080600e819055506103e8600e54600d54610cb89190612bc6565b1115610cc357600080fd5b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d2157600080fd5b60005b8251811015610daf5781600a6000858481518110610d4557610d44612c1c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610da890612c4b565b9050610d24565b505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5757600080fd5b60c8811115610e6557600080fd5b80600c8190555050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ea890612aac565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed490612aac565b8015610f215780601f10610ef657610100808354040283529160200191610f21565b820191906000526020600020905b815481529060010190602001808311610f0457829003601f168201915b5050505050905090565b6000610f38338484611852565b6001905092915050565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa257600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461104057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b57600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111209190612ca8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190612ca8565b6040518363ffffffff1660e01b81526004016111dc929190612cd5565b6020604051808303816000875af11580156111fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190612ca8565b9050600061122b611ceb565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112cf919061272e565b60405180910390a3678ac7230489e80000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611381919061272e565b60405180910390a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71947308460008033426040518863ffffffff1660e01b81526004016114ef96959493929190612d43565b60606040518083038185885af115801561150d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115329190612db9565b50505081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426011819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461169457600080fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601154036116ed57600054905061173f565b6000603c601054601154426117029190612e0c565b61170c9190612b0c565b6117169190612b95565b600f546117239190612bc6565b905060005481111561173a5760005491505061173f565b809150505b90565b60006103e8600b54836117559190612b0c565b61175f9190612b95565b905092915050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611845919061272e565b60405180910390a3505050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90612e8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90612ef8565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119ea5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae457600760149054906101000a900460ff16611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590612f64565b60405180910390fd5b611a49838383611d08565b9050611a536116d8565b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9e9190612bc6565b1115611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690612fd0565b60405180910390fd5b611c70565b600560009054906101000a900460ff16158015611b505750600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015611bff5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6f57611c0e8382611d27565b9050611c6e81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054737a250d5630b4cf539739df2c5dacb4c659f2488d611d45565b5b5b611c7b838383611d7c565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611ce8573d6000803e3d6000fd5b50565b6000678ac7230489e80000600054611d039190612e0c565b905090565b6000611d1e8483611d198686611742565b611ed4565b90509392505050565b6000611d3d8383611d3886866108d3565b611ed4565b905092915050565b6000820315611d77576000836002611d5d9190612b0c565b905080831115611d6b578092505b611d7583836122e6565b505b505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611dcd57600080fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190612bc6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ec6919061272e565b60405180910390a350505050565b6000806103e8600d5484611ee89190612b0c565b611ef29190612b95565b905060008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f69576103e8600e5485611f5c9190612b0c565b611f669190612b95565b90505b60006103e8600e54600d54611f7e9190612bc6565b1015611f9e57818386611f919190612e0c565b611f9b9190612e0c565b90505b8486611faa9190612e0c565b955084600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ffb9190612e0c565b9250508190555060008311156120c75782600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461205a9190612bc6565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120be919061272e565b60405180910390a35b60008211156121d0578160036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121419190612bc6565b92505081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121c7919061272e565b60405180910390a35b60008111156122d9578060036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461224a9190612bc6565b92505081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122d0919061272e565b60405180910390a35b8593505050509392505050565b6001600560006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561231e5761231d61289e565b5b60405190808252806020026020018201604052801561234c5781602001602082028036833780820191505090505b509050308160008151811061236457612363612c1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240d9190612ca8565b8160018151811061242157612420612c1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166318cbafe58460008430426040518663ffffffff1660e01b815260040161249d9594939291906130ae565b600060405180830381600087803b1580156124b757600080fd5b505af11580156124cb573d6000803e3d6000fd5b50505050506000600560006101000a81548160ff0219169083151502179055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252957808201518184015260208101905061250e565b83811115612538576000848401525b50505050565b6000601f19601f8301169050919050565b600061255a826124ef565b61256481856124fa565b935061257481856020860161250b565b61257d8161253e565b840191505092915050565b600060208201905081810360008301526125a2818461254f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125e9826125be565b9050919050565b6125f9816125de565b811461260457600080fd5b50565b600081359050612616816125f0565b92915050565b6000819050919050565b61262f8161261c565b811461263a57600080fd5b50565b60008135905061264c81612626565b92915050565b60008060408385031215612669576126686125b4565b5b600061267785828601612607565b92505060206126888582860161263d565b9150509250929050565b60008115159050919050565b6126a781612692565b82525050565b60006020820190506126c2600083018461269e565b92915050565b6000602082840312156126de576126dd6125b4565b5b60006126ec8482850161263d565b91505092915050565b6126fe816125de565b82525050565b600060208201905061271960008301846126f5565b92915050565b6127288161261c565b82525050565b6000602082019050612743600083018461271f565b92915050565b600080600060608486031215612762576127616125b4565b5b600061277086828701612607565b935050602061278186828701612607565b92505060406127928682870161263d565b9150509250925092565b600060ff82169050919050565b6127b28161279c565b82525050565b60006020820190506127cd60008301846127a9565b92915050565b6000602082840312156127e9576127e86125b4565b5b60006127f784828501612607565b91505092915050565b61280981612692565b811461281457600080fd5b50565b60008135905061282681612800565b92915050565b600060208284031215612842576128416125b4565b5b600061285084828501612817565b91505092915050565b600080604083850312156128705761286f6125b4565b5b600061287e8582860161263d565b925050602061288f8582860161263d565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128d68261253e565b810181811067ffffffffffffffff821117156128f5576128f461289e565b5b80604052505050565b60006129086125aa565b905061291482826128cd565b919050565b600067ffffffffffffffff8211156129345761293361289e565b5b602082029050602081019050919050565b600080fd5b600061295d61295884612919565b6128fe565b905080838252602082019050602084028301858111156129805761297f612945565b5b835b818110156129a957806129958882612607565b845260208401935050602081019050612982565b5050509392505050565b600082601f8301126129c8576129c7612899565b5b81356129d884826020860161294a565b91505092915050565b600080604083850312156129f8576129f76125b4565b5b600083013567ffffffffffffffff811115612a1657612a156125b9565b5b612a22858286016129b3565b9250506020612a3385828601612817565b9150509250929050565b60008060408385031215612a5457612a536125b4565b5b6000612a6285828601612607565b9250506020612a7385828601612607565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ac457607f821691505b602082108103612ad757612ad6612a7d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b178261261c565b9150612b228361261c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b5b57612b5a612add565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ba08261261c565b9150612bab8361261c565b925082612bbb57612bba612b66565b5b828204905092915050565b6000612bd18261261c565b9150612bdc8361261c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c1157612c10612add565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612c568261261c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c8857612c87612add565b5b600182019050919050565b600081519050612ca2816125f0565b92915050565b600060208284031215612cbe57612cbd6125b4565b5b6000612ccc84828501612c93565b91505092915050565b6000604082019050612cea60008301856126f5565b612cf760208301846126f5565b9392505050565b6000819050919050565b6000819050919050565b6000612d2d612d28612d2384612cfe565b612d08565b61261c565b9050919050565b612d3d81612d12565b82525050565b600060c082019050612d5860008301896126f5565b612d65602083018861271f565b612d726040830187612d34565b612d7f6060830186612d34565b612d8c60808301856126f5565b612d9960a083018461271f565b979650505050505050565b600081519050612db381612626565b92915050565b600080600060608486031215612dd257612dd16125b4565b5b6000612de086828701612da4565b9350506020612df186828701612da4565b9250506040612e0286828701612da4565b9150509250925092565b6000612e178261261c565b9150612e228361261c565b925082821015612e3557612e34612add565b5b828203905092915050565b7f6e6f7420656e6f75676820746f6b656e20666f72207472616e73666572000000600082015250565b6000612e76601d836124fa565b9150612e8182612e40565b602082019050919050565b60006020820190508181036000830152612ea581612e69565b9050919050565b7f696e636f72726563742061646472657373000000000000000000000000000000600082015250565b6000612ee26011836124fa565b9150612eed82612eac565b602082019050919050565b60006020820190508181036000830152612f1181612ed5565b9050919050565b7f74726164696e672064697361626c656400000000000000000000000000000000600082015250565b6000612f4e6010836124fa565b9150612f5982612f18565b602082019050919050565b60006020820190508181036000830152612f7d81612f41565b9050919050565b7f6d61782077616c6c657420636f6e73747261696e740000000000000000000000600082015250565b6000612fba6015836124fa565b9150612fc582612f84565b602082019050919050565b60006020820190508181036000830152612fe981612fad565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613025816125de565b82525050565b6000613037838361301c565b60208301905092915050565b6000602082019050919050565b600061305b82612ff0565b6130658185612ffb565b93506130708361300c565b8060005b838110156130a1578151613088888261302b565b975061309383613043565b925050600181019050613074565b5085935050505092915050565b600060a0820190506130c3600083018861271f565b6130d06020830187612d34565b81810360408301526130e28186613050565b90506130f160608301856126f5565b6130fe608083018461271f565b969550505050505056fea264697066735822122087c2da39c0c05383f6704b51eb317163a769dfbf40532844c7ed5721dc002bad64736f6c634300080f0033
Deployed Bytecode Sourcemap
16057:442:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6588:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13383:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;919:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5600:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13215:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9883:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7017:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13876:106;;;;;;;;;;;;;:::i;:::-;;9692:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5507:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;752:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;556:74;;;;;;;;;;;;;:::i;:::-;;9571:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15816:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13990:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15565:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16334:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13538:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1342:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5410:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9829:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13698:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10885:1010;;;;;;;;;;;;;:::i;:::-;;9538:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9776:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6394:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9934:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1234:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10542:335;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13049:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5317:85;5356:13;5389:5;5382:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:85;:::o;6588:193::-;6692:4;6714:37;6723:10;6735:7;6744:6;6714:8;:37::i;:::-;6769:4;6762:11;;6588:193;;;;:::o;13383:147::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;13483:3:::1;13467:12;:19;;13459:28;;;::::0;::::1;;13510:12;13498:9;:24;;;;13383:147:::0;:::o;919:101::-;969:7;996:16;;;;;;;;;;;989:23;;919:101;:::o;5600:102::-;5655:7;5682:12;;5675:19;;5600:102;:::o;13215:160::-;13307:7;13363:4;13349:10;;13340:6;:19;;;;:::i;:::-;13339:28;;;;:::i;:::-;13332:35;;13215:160;;;;:::o;9883:31::-;;;;:::o;7017:504::-;7151:4;7168:36;7178:6;7186:9;7197:6;7168:9;:36::i;:::-;7217:24;7244:11;:19;7256:6;7244:19;;;;;;;;;;;;;;;:31;7264:10;7244:31;;;;;;;;;;;;;;;;7217:58;;7314:6;7294:16;:26;;7286:35;;;;;;5174:10;7336:16;:38;7332:55;;7383:4;7376:11;;;;;7332:55;7423;7432:6;7440:10;7471:6;7452:16;:25;7423:8;:55::i;:::-;7509:4;7502:11;;;7017:504;;;;;;:::o;13876:106::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;13972:1:::1;13949:12;;:25;;;;;;;;;;;;;;;;;;13876:106::o:0;9692:27::-;;;;;;;;;;;;;:::o;5507:85::-;5550:5;4951:1;5568:16;;5507:85;:::o;752:159::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;885:18:::1;866:16;;:37;;;;;;;;;;;;;;;;;;752:159:::0;:::o;556:74::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;611:11:::1;:9;:11::i;:::-;556:74::o:0;9571:28::-;;;;;;;;;;;;;:::o;15816:89::-;1139:6;;;;;;;;;;;1125:20;;:10;:20;;;1117:29;;;;;;15892:5:::1;15880:9;;:17;;;;;;;;;;;;;;;;;;15816:89:::0;:::o;13990:246::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;14126:12:::1;14114:9;:24;;;;14162:16;14149:10;:29;;;;14223:4;14209:10;;14197:9;;:22;;;;:::i;:::-;:30;;14189:39;;;::::0;::::1;;13990:246:::0;;:::o;15565:243::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;15694:9:::1;15689:112;15713:8;:15;15709:1;:19;15689:112;;;15784:5;15750:18;:31;15769:8;15778:1;15769:11;;;;;;;;:::i;:::-;;;;;;;;15750:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15730:3;;;;:::i;:::-;;;15689:112;;;;15565:243:::0;;:::o;16334:162::-;16438:7;16470:9;:18;16480:7;16470:18;;;;;;;;;;;;;;;;16463:25;;16334:162;;;:::o;13538:152::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;13641:3:::1;13624:13;:20;;13616:29;;;::::0;::::1;;13669:13;13656:10;:26;;;;13538:152:::0;:::o;1342:81::-;1382:7;1409:6;;;;;;;;;;;1402:13;;1342:81;:::o;5410:89::-;5451:13;5484:7;5477:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5410:89;:::o;5803:199::-;5910:4;5932:40;5942:10;5954:9;5965:6;5932:9;:40::i;:::-;5990:4;5983:11;;5803:199;;;;:::o;9829:30::-;;;;:::o;13698:170::-;511:16;;;;;;;;;;;497:30;;:10;:30;;;489:39;;;;;;13837:23:::1;13822:12;;:38;;;;;;;;;;;;;;;;;;13698:170:::0;:::o;10885:1010::-;1139:6;;;;;;;;;;;1125:20;;:10;:20;;;1117:29;;;;;;10971:1:::1;10948:25;;:11;;;;;;;;;;;:25;;;10940:34;;;::::0;::::1;;10985:12;9488:42;11018:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11000:56;;;11079:4;9488:42;11099:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11000:133;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10985:148;;11144:24;11171:27;:25;:27::i;:::-;11144:54;;11236:16;11209:9;:24;11227:4;11209:24;;;;;;;;;;;;;;;:43;;;;11297:4;11268:53;;11285:1;11268:53;;;11304:16;11268:53;;;;;;:::i;:::-;;;;;;;;11358:4;11334:9;:21;11344:10;11334:21;;;;;;;;;;;;;;;:28;;;;11399:10;11378:50;;11395:1;11378:50;;;11411:16;11378:50;;;;;;:::i;:::-;;;;;;;;5174:10;11441:11;:26;11461:4;11441:26;;;;;;;;;;;;;;;:77;9488:42;11441:77;;;;;;;;;;;;;;;:98;;;;11577:4;11550:18;:24;11569:4;11550:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;9488:42;11592:32;;;11632:21;11677:4;11697:16;11728:1;11744::::0;11760:10:::1;11785:15;11592:219;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11838:4;11824:11;;:18;;;;;;;;;;;;;;;;;;11872:15;11853:16;:34;;;;10929:966;;10885:1010::o:0;9538:26::-;;;;;;;;;;;;;:::o;9776:29::-;;;;:::o;6394:186::-;6513:7;6545:11;:18;6557:5;6545:18;;;;;;;;;;;;;;;:27;6564:7;6545:27;;;;;;;;;;;;;;;;6538:34;;6394:186;;;;:::o;9934:29::-;;;;:::o;1234:100::-;1139:6;;;;;;;;;;;1125:20;;:10;:20;;;1117:29;;;;;;1318:8:::1;1309:6;;:17;;;;;;;;;;;;;;;;;;1234:100:::0;:::o;10542:335::-;10584:7;10628:1;10608:16;;:21;10604:46;;10638:12;;10631:19;;;;10604:46;10661:11;10784:9;10745:21;;10725:16;;10707:15;:34;;;;:::i;:::-;10706:60;;;;:::i;:::-;10705:89;;;;:::i;:::-;10675:14;;:119;;;;:::i;:::-;10661:133;;10815:12;;10809:3;:18;10805:43;;;10836:12;;10829:19;;;;;10805:43;10866:3;10859:10;;;10542:335;;:::o;13049:158::-;13140:7;13195:4;13182:9;;13173:6;:18;;;;:::i;:::-;13172:27;;;;:::i;:::-;13165:34;;13049:158;;;;:::o;6789:220::-;6947:6;6917:11;:18;6929:5;6917:18;;;;;;;;;;;;;;;:27;6936:7;6917:27;;;;;;;;;;;;;;;:36;;;;6985:7;6969:32;;6978:5;6969:32;;;6994:6;6969:32;;;;;;:::i;:::-;;;;;;;;6789:220;;;:::o;11903:1138::-;12054:6;12035:9;:15;12045:4;12035:15;;;;;;;;;;;;;;;;:25;;12027:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12127:1;12113:16;;:2;:16;;;12105:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12192:11;;;;;;;;;;;12184:19;;:4;:19;;;:46;;;;;12208:18;:22;12227:2;12208:22;;;;;;;;;;;;;;;;;;;;;;;;;12207:23;12184:46;12180:787;;;12255:9;;;;;;;;;;;12247:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12335:28;12346:4;12352:2;12356:6;12335:10;:28::i;:::-;12326:37;;12430:11;:9;:11::i;:::-;12420:6;12404:9;:13;12414:2;12404:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:37;;12378:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;12180:787;;;12561:7;;;;;;;;;;;12560:8;:50;;;;;12608:1;12585:25;;:11;;;;;;;;;;;:25;;;;12560:50;:84;;;;;12633:11;;;;;;;;;;;12627:17;;:2;:17;;;12560:84;:126;;;;;12662:18;:24;12681:4;12662:24;;;;;;;;;;;;;;;;;;;;;;;;;12661:25;12560:126;12542:425;;;12742:25;12754:4;12760:6;12742:11;:25::i;:::-;12733:34;;12810:145;12856:6;12881:9;:24;12899:4;12881:24;;;;;;;;;;;;;;;;9488:42;12810:27;:145::i;:::-;12542:425;12180:787;13000:33;13016:4;13022:2;13026:6;13000:15;:33::i;:::-;11903:1138;;;:::o;638:106::-;687:16;;;;;;;;;;;679:34;;:57;714:21;679:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:106::o;16162:164::-;16267:7;16314:4;16299:12;;:19;;;;:::i;:::-;16292:26;;16162:164;:::o;14244:196::-;14357:7;14384:48;14396:4;14402:6;14410:21;14420:2;14424:6;14410:9;:21::i;:::-;14384:11;:48::i;:::-;14377:55;;14244:196;;;;;:::o;14448:177::-;14534:7;14566:51;14578:4;14584:6;14592:24;14603:4;14609:6;14592:10;:24::i;:::-;14566:11;:51::i;:::-;14559:58;;14448:177;;;;:::o;3650:379::-;3838:1;3825:9;:14;3821:27;3841:7;3821:27;3858:20;3885:14;3881:1;:18;;;;:::i;:::-;3858:41;;3926:12;3914:9;:24;3910:54;;;3952:12;3940:24;;3910:54;3975:46;3993:9;4004:16;3975:17;:46::i;:::-;3810:219;3650:379;;;;:::o;6010:376::-;6133:21;6157:9;:15;6167:4;6157:15;;;;;;;;;;;;;;;;6133:39;;6208:6;6191:13;:23;;6183:32;;;;;;6285:6;6269:13;:22;6251:9;:15;6261:4;6251:15;;;;;;;;;;;;;;;:40;;;;6330:6;6313:9;:13;6323:2;6313:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;6367:2;6352:26;;6361:4;6352:26;;;6371:6;6352:26;;;;;;:::i;:::-;;;;;;;;6122:264;6010:376;;;:::o;14633:924::-;14748:7;14768:15;14806:4;14793:9;;14787:3;:15;;;;:::i;:::-;14786:24;;;;:::i;:::-;14768:42;;14821:16;14880:1;14856:26;;:12;;;;;;;;;;;:26;;;14852:81;;14929:4;14915:10;;14909:3;:16;;;;:::i;:::-;14908:25;;;;:::i;:::-;14897:36;;14852:81;14944:12;15000:4;14987:10;;14975:9;;:22;;;;:::i;:::-;:29;14971:66;;;15029:8;15019:7;15013:3;:13;;;;:::i;:::-;:24;;;;:::i;:::-;15006:31;;14971:66;15060:3;15050:13;;;;;:::i;:::-;;;15093:3;15074:9;:15;15084:4;15074:15;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;15123:1;15113:7;:11;15109:137;;;15169:7;15141:9;:24;15159:4;15141:24;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;15219:4;15196:38;;15205:4;15196:38;;;15226:7;15196:38;;;;;;:::i;:::-;;;;;;;;15109:137;15271:1;15260:8;:12;15256:138;;;15316:8;15289:9;:23;15299:12;;;;;;;;;;;15289:23;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;15359:12;;;;;;;;;;;15344:38;;15353:4;15344:38;;;15373:8;15344:38;;;;;;:::i;:::-;;;;;;;;15256:138;15415:1;15408:4;:8;15404:120;;;15457:4;15433:9;:20;15443:9;;;;;;;;;;;15433:20;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15496:9;;;;;;;;;;;15481:31;;15490:4;15481:31;;;15507:4;15481:31;;;;;;:::i;:::-;;;;;;;;15404:120;15543:6;15536:13;;;;;14633:924;;;;;:::o;3011:631::-;2953:4;2943:7;;:14;;;;;;;;;;;;;;;;;;3213:21:::1;3251:1;3237:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3213:40;;3282:4;3264;3269:1;3264:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;3308:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3298:4;3303:1;3298:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;3422:16;:38;;;3475:11;3501:1;3545:4;3572;3608:15;3422:212;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3142:500;2990:5:::0;2980:7;;:15;;;;;;;;;;;;;;;;;;3011:631;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:116::-;5993:21;6008:5;5993:21;:::i;:::-;5986:5;5983:32;5973:60;;6029:1;6026;6019:12;5973:60;5923:116;:::o;6045:133::-;6088:5;6126:6;6113:20;6104:29;;6142:30;6166:5;6142:30;:::i;:::-;6045:133;;;;:::o;6184:323::-;6240:6;6289:2;6277:9;6268:7;6264:23;6260:32;6257:119;;;6295:79;;:::i;:::-;6257:119;6415:1;6440:50;6482:7;6473:6;6462:9;6458:22;6440:50;:::i;:::-;6430:60;;6386:114;6184:323;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:117::-;7102:1;7099;7092:12;7116:180;7164:77;7161:1;7154:88;7261:4;7258:1;7251:15;7285:4;7282:1;7275:15;7302:281;7385:27;7407:4;7385:27;:::i;:::-;7377:6;7373:40;7515:6;7503:10;7500:22;7479:18;7467:10;7464:34;7461:62;7458:88;;;7526:18;;:::i;:::-;7458:88;7566:10;7562:2;7555:22;7345:238;7302:281;;:::o;7589:129::-;7623:6;7650:20;;:::i;:::-;7640:30;;7679:33;7707:4;7699:6;7679:33;:::i;:::-;7589:129;;;:::o;7724:311::-;7801:4;7891:18;7883:6;7880:30;7877:56;;;7913:18;;:::i;:::-;7877:56;7963:4;7955:6;7951:17;7943:25;;8023:4;8017;8013:15;8005:23;;7724:311;;;:::o;8041:117::-;8150:1;8147;8140:12;8181:710;8277:5;8302:81;8318:64;8375:6;8318:64;:::i;:::-;8302:81;:::i;:::-;8293:90;;8403:5;8432:6;8425:5;8418:21;8466:4;8459:5;8455:16;8448:23;;8519:4;8511:6;8507:17;8499:6;8495:30;8548:3;8540:6;8537:15;8534:122;;;8567:79;;:::i;:::-;8534:122;8682:6;8665:220;8699:6;8694:3;8691:15;8665:220;;;8774:3;8803:37;8836:3;8824:10;8803:37;:::i;:::-;8798:3;8791:50;8870:4;8865:3;8861:14;8854:21;;8741:144;8725:4;8720:3;8716:14;8709:21;;8665:220;;;8669:21;8283:608;;8181:710;;;;;:::o;8914:370::-;8985:5;9034:3;9027:4;9019:6;9015:17;9011:27;9001:122;;9042:79;;:::i;:::-;9001:122;9159:6;9146:20;9184:94;9274:3;9266:6;9259:4;9251:6;9247:17;9184:94;:::i;:::-;9175:103;;8991:293;8914:370;;;;:::o;9290:678::-;9380:6;9388;9437:2;9425:9;9416:7;9412:23;9408:32;9405:119;;;9443:79;;:::i;:::-;9405:119;9591:1;9580:9;9576:17;9563:31;9621:18;9613:6;9610:30;9607:117;;;9643:79;;:::i;:::-;9607:117;9748:78;9818:7;9809:6;9798:9;9794:22;9748:78;:::i;:::-;9738:88;;9534:302;9875:2;9901:50;9943:7;9934:6;9923:9;9919:22;9901:50;:::i;:::-;9891:60;;9846:115;9290:678;;;;;:::o;9974:474::-;10042:6;10050;10099:2;10087:9;10078:7;10074:23;10070:32;10067:119;;;10105:79;;:::i;:::-;10067:119;10225:1;10250:53;10295:7;10286:6;10275:9;10271:22;10250:53;:::i;:::-;10240:63;;10196:117;10352:2;10378:53;10423:7;10414:6;10403:9;10399:22;10378:53;:::i;:::-;10368:63;;10323:118;9974:474;;;;;:::o;10454:180::-;10502:77;10499:1;10492:88;10599:4;10596:1;10589:15;10623:4;10620:1;10613:15;10640:320;10684:6;10721:1;10715:4;10711:12;10701:22;;10768:1;10762:4;10758:12;10789:18;10779:81;;10845:4;10837:6;10833:17;10823:27;;10779:81;10907:2;10899:6;10896:14;10876:18;10873:38;10870:84;;10926:18;;:::i;:::-;10870:84;10691:269;10640:320;;;:::o;10966:180::-;11014:77;11011:1;11004:88;11111:4;11108:1;11101:15;11135:4;11132:1;11125:15;11152:348;11192:7;11215:20;11233:1;11215:20;:::i;:::-;11210:25;;11249:20;11267:1;11249:20;:::i;:::-;11244:25;;11437:1;11369:66;11365:74;11362:1;11359:81;11354:1;11347:9;11340:17;11336:105;11333:131;;;11444:18;;:::i;:::-;11333:131;11492:1;11489;11485:9;11474:20;;11152:348;;;;:::o;11506:180::-;11554:77;11551:1;11544:88;11651:4;11648:1;11641:15;11675:4;11672:1;11665:15;11692:185;11732:1;11749:20;11767:1;11749:20;:::i;:::-;11744:25;;11783:20;11801:1;11783:20;:::i;:::-;11778:25;;11822:1;11812:35;;11827:18;;:::i;:::-;11812:35;11869:1;11866;11862:9;11857:14;;11692:185;;;;:::o;11883:305::-;11923:3;11942:20;11960:1;11942:20;:::i;:::-;11937:25;;11976:20;11994:1;11976:20;:::i;:::-;11971:25;;12130:1;12062:66;12058:74;12055:1;12052:81;12049:107;;;12136:18;;:::i;:::-;12049:107;12180:1;12177;12173:9;12166:16;;11883:305;;;;:::o;12194:180::-;12242:77;12239:1;12232:88;12339:4;12336:1;12329:15;12363:4;12360:1;12353:15;12380:233;12419:3;12442:24;12460:5;12442:24;:::i;:::-;12433:33;;12488:66;12481:5;12478:77;12475:103;;12558:18;;:::i;:::-;12475:103;12605:1;12598:5;12594:13;12587:20;;12380:233;;;:::o;12619:143::-;12676:5;12707:6;12701:13;12692:22;;12723:33;12750:5;12723:33;:::i;:::-;12619:143;;;;:::o;12768:351::-;12838:6;12887:2;12875:9;12866:7;12862:23;12858:32;12855:119;;;12893:79;;:::i;:::-;12855:119;13013:1;13038:64;13094:7;13085:6;13074:9;13070:22;13038:64;:::i;:::-;13028:74;;12984:128;12768:351;;;;:::o;13125:332::-;13246:4;13284:2;13273:9;13269:18;13261:26;;13297:71;13365:1;13354:9;13350:17;13341:6;13297:71;:::i;:::-;13378:72;13446:2;13435:9;13431:18;13422:6;13378:72;:::i;:::-;13125:332;;;;;:::o;13463:85::-;13508:7;13537:5;13526:16;;13463:85;;;:::o;13554:60::-;13582:3;13603:5;13596:12;;13554:60;;;:::o;13620:158::-;13678:9;13711:61;13729:42;13738:32;13764:5;13738:32;:::i;:::-;13729:42;:::i;:::-;13711:61;:::i;:::-;13698:74;;13620:158;;;:::o;13784:147::-;13879:45;13918:5;13879:45;:::i;:::-;13874:3;13867:58;13784:147;;:::o;13937:807::-;14186:4;14224:3;14213:9;14209:19;14201:27;;14238:71;14306:1;14295:9;14291:17;14282:6;14238:71;:::i;:::-;14319:72;14387:2;14376:9;14372:18;14363:6;14319:72;:::i;:::-;14401:80;14477:2;14466:9;14462:18;14453:6;14401:80;:::i;:::-;14491;14567:2;14556:9;14552:18;14543:6;14491:80;:::i;:::-;14581:73;14649:3;14638:9;14634:19;14625:6;14581:73;:::i;:::-;14664;14732:3;14721:9;14717:19;14708:6;14664:73;:::i;:::-;13937:807;;;;;;;;;:::o;14750:143::-;14807:5;14838:6;14832:13;14823:22;;14854:33;14881:5;14854:33;:::i;:::-;14750:143;;;;:::o;14899:663::-;14987:6;14995;15003;15052:2;15040:9;15031:7;15027:23;15023:32;15020:119;;;15058:79;;:::i;:::-;15020:119;15178:1;15203:64;15259:7;15250:6;15239:9;15235:22;15203:64;:::i;:::-;15193:74;;15149:128;15316:2;15342:64;15398:7;15389:6;15378:9;15374:22;15342:64;:::i;:::-;15332:74;;15287:129;15455:2;15481:64;15537:7;15528:6;15517:9;15513:22;15481:64;:::i;:::-;15471:74;;15426:129;14899:663;;;;;:::o;15568:191::-;15608:4;15628:20;15646:1;15628:20;:::i;:::-;15623:25;;15662:20;15680:1;15662:20;:::i;:::-;15657:25;;15701:1;15698;15695:8;15692:34;;;15706:18;;:::i;:::-;15692:34;15751:1;15748;15744:9;15736:17;;15568:191;;;;:::o;15765:179::-;15905:31;15901:1;15893:6;15889:14;15882:55;15765:179;:::o;15950:366::-;16092:3;16113:67;16177:2;16172:3;16113:67;:::i;:::-;16106:74;;16189:93;16278:3;16189:93;:::i;:::-;16307:2;16302:3;16298:12;16291:19;;15950:366;;;:::o;16322:419::-;16488:4;16526:2;16515:9;16511:18;16503:26;;16575:9;16569:4;16565:20;16561:1;16550:9;16546:17;16539:47;16603:131;16729:4;16603:131;:::i;:::-;16595:139;;16322:419;;;:::o;16747:167::-;16887:19;16883:1;16875:6;16871:14;16864:43;16747:167;:::o;16920:366::-;17062:3;17083:67;17147:2;17142:3;17083:67;:::i;:::-;17076:74;;17159:93;17248:3;17159:93;:::i;:::-;17277:2;17272:3;17268:12;17261:19;;16920:366;;;:::o;17292:419::-;17458:4;17496:2;17485:9;17481:18;17473:26;;17545:9;17539:4;17535:20;17531:1;17520:9;17516:17;17509:47;17573:131;17699:4;17573:131;:::i;:::-;17565:139;;17292:419;;;:::o;17717:166::-;17857:18;17853:1;17845:6;17841:14;17834:42;17717:166;:::o;17889:366::-;18031:3;18052:67;18116:2;18111:3;18052:67;:::i;:::-;18045:74;;18128:93;18217:3;18128:93;:::i;:::-;18246:2;18241:3;18237:12;18230:19;;17889:366;;;:::o;18261:419::-;18427:4;18465:2;18454:9;18450:18;18442:26;;18514:9;18508:4;18504:20;18500:1;18489:9;18485:17;18478:47;18542:131;18668:4;18542:131;:::i;:::-;18534:139;;18261:419;;;:::o;18686:171::-;18826:23;18822:1;18814:6;18810:14;18803:47;18686:171;:::o;18863:366::-;19005:3;19026:67;19090:2;19085:3;19026:67;:::i;:::-;19019:74;;19102:93;19191:3;19102:93;:::i;:::-;19220:2;19215:3;19211:12;19204:19;;18863:366;;;:::o;19235:419::-;19401:4;19439:2;19428:9;19424:18;19416:26;;19488:9;19482:4;19478:20;19474:1;19463:9;19459:17;19452:47;19516:131;19642:4;19516:131;:::i;:::-;19508:139;;19235:419;;;:::o;19660:114::-;19727:6;19761:5;19755:12;19745:22;;19660:114;;;:::o;19780:184::-;19879:11;19913:6;19908:3;19901:19;19953:4;19948:3;19944:14;19929:29;;19780:184;;;;:::o;19970:132::-;20037:4;20060:3;20052:11;;20090:4;20085:3;20081:14;20073:22;;19970:132;;;:::o;20108:108::-;20185:24;20203:5;20185:24;:::i;:::-;20180:3;20173:37;20108:108;;:::o;20222:179::-;20291:10;20312:46;20354:3;20346:6;20312:46;:::i;:::-;20390:4;20385:3;20381:14;20367:28;;20222:179;;;;:::o;20407:113::-;20477:4;20509;20504:3;20500:14;20492:22;;20407:113;;;:::o;20556:732::-;20675:3;20704:54;20752:5;20704:54;:::i;:::-;20774:86;20853:6;20848:3;20774:86;:::i;:::-;20767:93;;20884:56;20934:5;20884:56;:::i;:::-;20963:7;20994:1;20979:284;21004:6;21001:1;20998:13;20979:284;;;21080:6;21074:13;21107:63;21166:3;21151:13;21107:63;:::i;:::-;21100:70;;21193:60;21246:6;21193:60;:::i;:::-;21183:70;;21039:224;21026:1;21023;21019:9;21014:14;;20979:284;;;20983:14;21279:3;21272:10;;20680:608;;;20556:732;;;;:::o;21294:831::-;21557:4;21595:3;21584:9;21580:19;21572:27;;21609:71;21677:1;21666:9;21662:17;21653:6;21609:71;:::i;:::-;21690:80;21766:2;21755:9;21751:18;21742:6;21690:80;:::i;:::-;21817:9;21811:4;21807:20;21802:2;21791:9;21787:18;21780:48;21845:108;21948:4;21939:6;21845:108;:::i;:::-;21837:116;;21963:72;22031:2;22020:9;22016:18;22007:6;21963:72;:::i;:::-;22045:73;22113:3;22102:9;22098:19;22089:6;22045:73;:::i;:::-;21294:831;;;;;;;;:::o
Swarm Source
ipfs://87c2da39c0c05383f6704b51eb317163a769dfbf40532844c7ed5721dc002bad
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.